2013-08-27 52 views
16

我在我的項目中創建了一個控制檯命令。我希望它在每天下午7點執行。我怎麼能在symfony2中做到這一點?一個基本的PHP cron工作方式或symfony2有更方便的東西? 感謝symfony2中的Cron作業

回答

25

您可以使用基本的cron。在debian的Ubuntu的你可以這樣做:

crontab -e -u <username> 

用戶名是應該執行命令的用戶的名稱。 在編輯器中添加您的命令。這裏是a good explanation線應該看起來如何。對於Symfony2的命令,這樣的事情應該工作:

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

這將執行每分鐘your:command --option=123


在一個窗口機可以使用ac命令。它默認可用於windows 7Read the docs here。它應該是這個樣子:

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

確保phpavailable globaly或路徑php.exe文件是正確的。

+0

Jep,這是要走的路。 –

+0

我的操作系統是window7。我無法直接運行crontab命令。那我該怎麼辦?謝謝你的回答。 @ byf-ferdy –

+0

我更新了我的答案。 – ferdynator

2

您可以只設置一個cron在crontab來執行的symfony命令,

例如

0 19 * * * /無功/網絡/ symfony中/應用/控制檯YOUR_COMMAND

+0

Nop,您必須以www-data用戶身份運行該命令,否則可能會破壞緩存。 –

0

我認爲這是一個很好的問題。

我最近做了一些工作(使用ZF1組件,而不是完整的MVC),其中cron作業存在各種隱藏的依賴關係以執行任務,並且我不得不花費很多時間添加註釋並創建文檔來警告任何人跟隨我這些克朗存在什麼,他們做了什麼,他們存儲在哪裏等等。

它永遠不會醒悟過來了,會有一個ZF組件只是爲了這個目的,很多依賴於控制器雖然...

,對不起,我不回答,雖然你的直接問題。

FWIW

+0

您的鏈接已過時。 – ferdynator

+0

這是一個答案? – Trix

0

注意用戶執行命令。如果你以root身份運行它,root可以擁有Symfony緩存,然後破壞你的站點HTTP端(因爲nginx將以www數據用戶身份運行)。

使用Docker,我使用phusion基礎映像「setuser」方法來強制www-data用戶。