我們基於Zend 1的系統有一個作爲後臺進程運行的後臺進程,用於每小時檢查用戶是否過期,如果是,系統會向這些過期的用戶發送驗證郵件。PHP上的任務/作業調度
的代碼是非常簡單的:
while(1) {
$worker = ... //get verification worker
$worker->run();
sleep(3600); //run hourly
}
我們想尋找有免費的工具,更好的方法來替換此代碼在系統調度工作。 Zend Job Queue是非常好的方法,但它是商業的。
我下面的兩個思維方法作爲Zend的作業隊列替代:
相反運行的守護進程,在crontab來每小時運行PHP腳本配置cron作業,但我不知道它是否是上面更好的代碼與否。
在nodejs服務器上運行node cron直接調用PHP腳本。
我也看過Gearman和beanstalked他們是否支持作業調度,但真的很難在這方面。
請建議是否有更好的方法來安排PHP任務。
使用本地'crontab';長時間運行的PHP腳本往往會在特定的時間點失敗。 '睡(3600);'也不準確。 – DanFromGermany 2014-09-03 10:23:40
@DanFromGermany:感謝您的評論,除了長時間PHP運行在特定時間點往往會失敗,在這種情況下是否還有其他哪些crontab更適合?我對這個東西很新,我的情況確實需要準確的時間點。 – 2014-09-03 10:32:16
'crontab'很容易維護(你可以使用'/ etc/cron.d'文件夾對作業進行分組),它在時間上是準確的(我見過的最大時間爲1秒)。我在一臺使用crontab的服務器上運行了幾百個cronjob,並且所有的工作都很好。 – DanFromGermany 2014-09-03 10:33:46