Programar la tarea con cron
En Linux, la forma más sencilla para que un script PHP se ejecute a intervalos regulares, suele ser con el uso de la herramienta cron (al final del artículo tienes varios tutoriales sobre el uso de cron y crontab)
Primero añadimos la tarea al fichero /etc/crontab. Así, si queremos ejecutar el fichero /var/www/test.php cada15 minutos:
sudo nano /etc/crontabY al final del fichero añadiremos:
15 * * * * usuario php -f /var/www/test.phpSi una vez pasada la hora programada, queremos comprobar que cron ha ejecutado el script, podemos ojear el log en el que registra los eventos. En él, debería haber una linea con la hora, el nombre "cron" y el nombre del script:
sudo cat /var/log/syslog
Debugging / Depuración del script
Si es tu primer script programado, es posible que cometas errores de rutas relativas y permisos, ya que cron normalmente se ejecuta con un usuario distinto al del servidor web y, además, usará las rutas del sistema de ficheros en vez de las rutas del servidor web. Por tanto, si el script se ejecuta pero no hace lo que debe, querrás depurarlo para encontrar el error.
Depuración básica
Para hacer una depuración a base de “echo” y “var_dump”, basta con modifiar la tarea programada en crontab a:
* * * * * usuario php -f /var/www/test.php >> /tmp/php_debug_log.txtEl motivo de poner cinco asteriscos es para que se ejecute cada minuto (sí, ya sé lo engorroso que es esto)
Depuración de errores
Para ver los errores generados por el motor de PHP, tendremos que modificar el fichero de configuración php.ini para la linea de comandos (CLI). Nota: Este fichero es distinto al php.ini del servidor web
sudo nano /etc/php5/cli/php.ini
Buscamos la variable error_reporting para activar todos los errores y la variable error_log para escribir la ruta del fichero en el que queremos guardar los errores. Por ejemplo:
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT error_log = /tmp/php_error_log.txt
Guardamos el fichero de configuración y comenzamos la depuración. Los cambios se aplican inmediatamente porque es el fichero de configuración para la linea de comandos.
Referencias: tutorial de cron en GeekyTheory, ejemplos de cron en Wikipedia
No hay comentarios:
Publicar un comentario