我在我的项目中创建了一个控制台命令。我希望它在每天晚上 7 点执行 我如何在 symfony2 中执行它?一个基本的 php cron 工作方式或 symfony2 有更方便的东西吗?谢谢
4 回答
您可以使用基本的cron。在debian或ubuntu上,您可以这样做:
crontab -e -u <username>
其中username是应该执行命令的用户的名称。在编辑器中添加您的命令。这是一个很好的解释线的外观。对于 Symfony2 命令,这样的东西应该可以工作:
* * * * * /usr/bin/php /var/www/symfony2/app/console your:command --option=123
这将your:command --option=123
每分钟执行一次。
在Windows机器上,您可以使用该ac
命令。它默认适用于Windows 7。在此处阅读文档。它应该看起来像这样:
AT 00:00 /every:M,T,W,Th,F "php /var/www/symfony2/app/console your:command --option=123"
确保全局可用php
或文件路径正确。php.exe
你可以在 crontab 中设置一个 cron 来执行你的 symfony 命令,
例如
0 19 * * * /var/www/symfony/app/console YOUR_COMMAND
我认为这是一个很好的问题。
我最近做了一些工作(使用 ZF1 组件,而不是完整的 MVC),其中各种隐藏的依赖项存在于 cron 作业上以执行任务,我不得不花很多时间添加评论和创建文档来警告任何追随我的人这些 cron 存在什么,他们做了什么,他们存储在哪里等等。
我从来没有想过会有一个 ZF 组件只是为了这个目的,但是对控制器有很多依赖......
对不起,我没有回答你的直接问题。
FWIW
注意你用来执行命令的用户。如果您以 root 身份运行它,root 可以拥有 Symfony 缓存然后破坏您的站点 HTTP 端(例如,因为 nginx 将以 www-data 用户身份运行)。
使用 Docker,我正在使用 phusion 基础映像“setuser”方法来强制使用 www-data 用户。