Muchas veces necesitamos correr procesos "batch" que se ejecutarán a determinada hora desde un cron (unix/linux) y no tienen ningún tipo de interacción con el usuario, a lo sumo, generarán un reporte de resultados del proceso en un log. Este tipo de procesos pueden ser tan variados como respaldos, transferencias de datos entre sistemas, envío masivo de mails a la base de usuarios, etc.
Por ejemplo:
30 13 * * * enrique php /var/www/batch/sincronizarBases.php &>/dev/null
Aquí se ve la ejecución para el usuario enrique, el cual llegada las 13:30 hs ejecutará el comando php /var/www/batch/sincronizarBases.php y toda la salida de mensajes internamente será redireccionada a un archivo de log.
También se puede evitar tener que llamar desde consola el comando php y decirle internamente que el ejecutable es el binario de php, además de tener que darle permisos de ejecución al archivo en cuestión (chmod +x ), por lo que la invocación quedaría así (sin la invocación de php):
30 13 * * * enrique /var/www/batch/sincronizarBases.php &>/dev/null
y la primera línea de nuestro scripts debería ser:
#!/usr/bin/php -q
// código fuente
Bien podríamos usar otro tipo de lenguaje o simple scripting bash, pero tener todo un sistema desarrollado en PHP permite luego reusar componentes o clases dentro de estos scripts "batch", así que bien podemos seguir usando nuestro lenguaje base de desarrollo.
Como último detalle que quería comentarles, es que amén que siempre hay que probar todo en consola antes de agregarlo al crontab, sucede que si bien sabemos que funciona todo correctamente, a veces tenemos que hacer modificaciones al scripts y que probablemente luego no nos tomamos el trabajo de volver a revisar nuevamente. Para estas situaciones les dejo un pequeño "tips" que puede ser de ayuda con errores básicos que nos pueden suceder sin darnos cuenta:
Luego de editar nuestro fuente, podemos verificar la sintaxis básica del código, evitando por lo menos no cometer un error en algun ";" o similar (obviamente, esto no asegura que no hayamos cometido un error de lógica):
php -l sincronizarBases.php
No syntax errors detected in sincronizarBases.php
En caso contrario
Parse error: syntax error, unexpected T_INCLUDE in sincronizarBases.php on line 33
Errors parsing sincronizarBases.php
Espero que les sea de utilidad ;-)
¿tienen alguna sugerencia más o experiencias en estos temas que quieran compartir?
Como convertirse en un "Desarrollador PHP Senior" y no morir en el intento... escrito por Enrique Place
Ejecución de scripts en modalidad "batch" y validar sintaxis
Suscribirse a:
Comentarios de la entrada (Atom)
Entradas populares
-
He visto mucha documentación que habla sobre el tema de los métodos "getter / setter", o traducido al castellano los métodos "...
-
Esto es lo que pasa cuando tienes entornos que no son homogéneos y cada aplicación se encuentra ubicada en distintas márgenes de un "rí...
-
Uno de los problemas que me he encontrado con la versión 5 de PHP es la falta de la representación de los "paquetes" desde el prop...
-
Este es un resumen de conclusiones que se vertieron en una discusión sobre el tema en Foros de Web , donde se plantea la duda de si PHP5 ...
-
Este es un ejemplo publicado a partir de la duda de un usuario , y como son preguntas que se hacen reiteradamente, les dejo el ejemplo aquí ...
-
Esta reflexión se la escribo a todos los "Programadores PHP": Al día de hoy la mayoría de los institutos o universidades de muchos...
-
El Patrón " Singleton " sirve para cuando buscamos restringir la creación de instancias de un objeto, obligando que solo se pueda ...
-
Hace un tiempo que vengo recomendando esta presentación como punto de partida para definir un estándar de desarrollo en una empresa. En ambi...
-
Bueno, luego de revisarlo una y otra vez (y otra vez) ya se encuentra terminada la primer versión del libro que junta toda la experiencia ac...
-
Estoy viendo muy seguido en foros que frecuento regularmente a muchos programadores que quieren dar " el gran salto " y evolucion...
5 comentarios:
Señor Enrique, sé que no viene al caso con la entrada de su blog, pero quería hacerle una pregunta: ¿Recomienda Ud. el uso de frameworks para el desarrollo php?, y si es así, ¿cuál recomienda?
Gracias.
Umm, veo que no es mucho de responder los comentarios, pero ya me decidí por uno: Symfony. ¡A darle entonces!
Que tal José ;-)
Si lees mi blog seguido verás que hablo mucho de Zend Framework ;-)
Sí, recomiendo toda la vida evitar reinventar la rueda, todo desarrollo profesional busca cumplir con un cliente o con un cronograma, y realizando todo "artesanalmente" nunca es el mejor camino.
Hay varios artículos en mi blog sobre el tema, pero también tienes muchas respuestas que di sobre el tema en formspring:
http://www.formspring.me/enriqueplace
Que tal Karen,
Te felicito!
Ja ja, karen es mi hermana, ella estaba logueada en Gmail y salió su nombre, pero igual gracias por su respuesta.
Publicar un comentario