symfony2 generate containerawarecommand php symfony cron

php - generate - symfony console



Cron trabajo en symfony2 (4)

Creo que esta es una buena pregunta.

Recientemente realicé algunos trabajos (con componentes ZF1, no con MVC completo) donde existían todo tipo de dependencias ocultas en las tareas cron para realizar tareas, y tuve que dedicar mucho tiempo a agregar comentarios y crear documentación para advertir a las personas que venían a mí qué existían estos crons. , lo que hicieron, donde fueron almacenados y así sucesivamente.

Nunca me di cuenta de que habría un componente ZF solo para ese propósito, aunque muchas dependencias en los controladores ...

Lo siento, no estoy respondiendo a tu pregunta directa sin embargo.

FWIW

Creo un comando de consola en mi proyecto. Quiero que se ejecute todos los días a las 7 pm ¿Cómo podría hacerlo en symfony2? ¿Una forma básica de trabajo php cron o symfony2 tiene algo más conveniente? Gracias


Preste atención al usuario que utiliza para ejecutar el comando. Si lo ejecutas como root, root podría poseer el caché de Symfony y luego romper el lado HTTP de tu sitio (porque nginx se ejecutará como usuario de www-data, por ejemplo).

Con Docker, estoy usando el método "setuser" de la imagen base de phusion para forzar al usuario de datos www.


Puedes configurar un cron en crontab para ejecutar tu comando de Symfony,

p.ej

0 19 * * * / var / www / symfony / app / console YOUR_COMMAND


Puedes usar el cron básico. En Debian o Ubuntu puedes hacer esto:

crontab -e -u <username>

Donde nombre de usuario es el nombre del usuario que debe ejecutar el comando. En el editor agrega tu comando. Aquí hay una buena explicación de cómo debe verse la línea. Para un comando de Symfony2 algo como esto debería funcionar:

* * * * * /usr/bin/php /var/www/symfony2/app/console your:command --option=123

Esto ejecutará your:command --option=123 cada minuto.

En una máquina Windows puede usar el comando ac . Está disponible para Windows 7 por defecto. Lea los documentos aquí . Debería verse algo como esto:

AT 00:00 /every:M,T,W,Th,F "php /var/www/symfony2/app/console your:command --option=123"

Asegúrese de que php esté disponible globalmente o que la ruta al archivo php.exe sea ​​correcta.