Je crée une commande de console dans mon projet. Je veux qu'il soit exécuté tous les jours à 19 heures Comment pourrais-je le faire dans symfony2? Une manière de base de travail cron ou symfony2 php ont quelque chose de plus pratique? Merci
Vous pouvez utiliser la base cron . Sur debian ou ubuntu, vous pouvez faire ceci:
crontab -e -u <username>
Où nom d'utilisateur _ est le nom de l'utilisateur qui doit exécuter la commande. Dans l'éditeur, ajoutez votre commande. Voici une bonne explication à quoi la ligne devrait ressembler. Pour une commande Symfony2, quelque chose comme ceci devrait fonctionner:
* * * * * /usr/bin/php /var/www/symfony2/app/console your:command --option=123
Ceci exécutera your:command --option=123
chaque minute.
Sur une machine windows, vous pouvez utiliser la commande ac
. Il est disponible pour Windows 7 par défaut. Lisez la documentation ici . Ça devrait ressembler a quelque chose comme ca:
AT 00:00 /every:M,T,W,Th,F "php /var/www/symfony2/app/console your:command --option=123"
Assurez-vous que php
est disponible globalement ou que le chemin du fichier php.exe
est correct.
Vous pouvez simplement définir un cron dans crontab pour exécuter votre commande symfony,
par exemple.
0 19 * * */var/www/symfony/app/console YOUR_COMMAND
Faites attention à l'utilisateur que vous utilisez pour exécuter la commande. Si vous l'exécutez en tant que root, ce dernier pourrait posséder le cache Symfony, puis casser le côté HTTP de votre site (car nginx s'exécutera en tant qu'utilisateur www-data, par exemple).
Avec Docker, j'utilise la méthode "setuser" de phusion base image pour forcer l'utilisateur www-data.
Je pense que c'est une bonne question.
J'ai récemment travaillé (en utilisant des composants ZF1, et non pas en MVC complet) où toutes sortes de dépendances cachées existaient sur les tâches cron pour effectuer des tâches, et je devais passer beaucoup de temps à ajouter des commentaires et à créer de la documentation pour avertir les personnes venant après que ces crons existaient. , ce qu’ils ont fait, où ils ont été stockés et ainsi de suite.
Je ne me suis jamais rendu compte qu'il y aurait un composant ZF juste à cette fin, mais de nombreuses dépendances des contrôleurs ...
Désolé, je ne réponds pas à votre question directe cependant.
FWIW