2011-07-04 30 views
1

您是否知道crontab備選方案,您可以通過PHP中的API啓動,停止,暫停,恢復,重新計劃?任何crontab備選方案,您可以通過PHP中的API啓動,停止,暫停,恢復,重新計劃?

或者這可能在crontab中?

我有一個由cron執行的長時間運行的php腳本。我將不得不暫停cron(而腳本正在執行)或重新安排,以便它不會在運行時重新運行我的php腳本。腳本運行後,我會再次啓動cron。

+2

同時運行鎖的問題,應該是(可以)解決了腳本本身,沒有編輯的時間表。 – zerkms

回答

2

你可以用肥胖控制器激進的時序(比如每5分鐘),這是一個用C寫的守護進程,它可以運行基本的任何東西,並重復它。它抽象了所有的流程邏輯,因此您可以將業務邏輯保存在您的PHP腳本中。它是完全可配置的,包括設置一個實例結束和下一個啓動之間的時間間隔,發生錯誤時間較長的時間間隔,以及如果需要,可以並行運行腳本的許多實例。

恐怕網站還是有一點基礎的,但是有很多信息,如果您需要任何幫助或有任何問題,請發郵件給我 - 我很樂意提供幫助!

http://www.4pmp.com/fatcontroller/

+0

哇,謝謝。將在我遇到問題時與您聯繫:) –

+0

不客氣 - 我希望在接下來的一週左右獲得新的網站和v0.0.3。 – SlappyTheFish

+0

您的項目和您的文章的描述http://www.4pmp.com/2011/02/daemonize-php-properly/正是我想要做的,將觀看您的項目 –

1

你應該嘗試一個工作隊列。

也有一些純PHP(像Zend Job Queue)實施或安裝像beanstalkd一個守護進程服務(採用PHP-API像Pheanstalk

+0

我已經在使用減速機。我只需運行一個php腳本(通過cron),它可以在任務運行時檢查數據庫的設置。然後PHP腳本將這個工作發送給齒輪工。我的PHP腳本就像一個齒輪工的客戶端。 –

4

您可能希望將locking邏輯添加到您的PHP腳本。例如。該腳本可能會檢查是否存在鎖定文件,如果存在,則會中止。否則,它會創建該文件並在完成後將其刪除。您可以將其他邏輯添加到腳本中,例如檢查上次運行的時間,並在上次運行時間小於1小時前中止。

至於cron作業,你可以設置基於這樣的假設,該腳本負責檢查門鎖,最後運行時間等

+0

「例如,腳本可能會檢查是否存在鎖定文件,如果存在,則會中止。」 ---我會補充說已經有'flock()'用於鎖定目的,這是無條件競爭的解決方案。但對於這個問題,甚至鎖定文件都可能是一個好的解決方案+1 – zerkms

+0

這是一個很好的解決方案,從來沒想過那個 –

相關問題