我在项目中创建了一个控制台命令。我希望它每天晚上7点执行。我怎么能在symfony2中做到这一点?基本的php cron工作方式还是symfony2有更方便的东西? 感谢
答案 0 :(得分:25)
您可以使用基本的 cron 。在 debian 或 ubuntu 上,你可以这样做:
crontab -e -u <username>
其中 username 是应该执行命令的用户的名称。 在编辑器中添加您的命令。这是a good explanation这条线的外观。对于Symfony2命令,这样的事情应该起作用:
* * * * * /usr/bin/php /var/www/symfony2/app/console your:command --option=123
这将每分钟执行your:command --option=123
。
在 windows 计算机上,您可以使用ac
命令。默认情况下,它可用于 windows 7 。 Read the docs here。看起来应该是这样的:
AT 00:00 /every:M,T,W,Th,F "php /var/www/symfony2/app/console your:command --option=123"
确保php
为available globaly或php.exe
文件的路径正确无误。
答案 1 :(得分:2)
你可以在crontab中设置一个cron来执行你的symfony命令,
e.g。
0 19 * * * / var / www / symfony / app / console YOUR_COMMAND
答案 2 :(得分:0)
我认为这是一个很好的问题。
我最近做了一些工作(使用ZF1组件,而不是完整的MVC),cron作业中存在各种隐藏依赖项以执行任务,我不得不花费大量时间添加注释和创建文档来警告任何追随我的人这些crons存在,他们做了什么,他们存放在哪里等等。
我永远不会觉得有一个ZF组件只是为了这个目的,虽然很多依赖控制器......
抱歉,我没有回答你的直接问题。
FWIW
答案 3 :(得分:0)
注意用于执行命令的用户。如果你以root身份运行它,root可以拥有Symfony缓存,然后破坏你的站点HTTP端(因为nginx将以www-data用户身份运行)。
使用Docker,我使用phusion基本图像“setuser”方法强制使用www-data用户。