2013-01-08 73 views
6

我有一個PHP腳本已經作爲一個cron作業運行。腳本使用數據庫來查看它是否有任何事情要做,並確保它的弟兄們還沒有運行。如何守護一個PHP腳本,並與新貴運行

我想運行PHP腳本作爲守護進程與upstart

我建立了我的/etc/init/super-mailer.conf文件爲這樣:

description "super mailer" 
author "Rob Nugen" 

start on startup 
stop on shutdown 
respawn 

exec sudo -u www-data php -f /var/www/super-mailer/scripts/mailer.php 

我執行sudo start super-mailer,它運行一次。

雖然它不會再運行。爲什麼不?

我也試圖與

script 
    sudo -u www-data php -f /var/www/clubberia-mailer/scripts/mailer.php 
end script 

更換exec sudo線我需要改變我的PHP腳本循環?我該如何告訴新手繼續開始腳本?

+0

您是否在腳本中實施了守護進程?如果不是,它將只運行一次。 –

回答

5

守護進程是一種類型的程序,不會停止,直到被告知爲止。但是,您的腳本會自行終止。所以是的,你需要在腳本中做一個循環,每次都會重新運行它。

但是,請記住,只是循環一次又一次地執行腳本,可能會使其消耗很多CPU週期。所以,你可能會考慮在每次迭代中調用一個像usleep這樣的函數來使得deamon的CPU消耗更少一些。所以,例如,你讓腳本每2秒運行一次。