2010-09-01 23 views
5

我有幾個腳本需要同時作爲單獨的進程運行。我的計劃是有一個cron作業,以設定的時間間隔執行這些腳本的多個實例。這是一個好主意嗎?這種方法有什麼優點/缺點?我還需要考慮其他選擇嗎?底線:我試圖模仿多線程。任何競賽條件都將通過代碼處理(例如,在數據庫中設置狀態等)。腳本應該執行處理密集型任務(例如創建縮略圖等)。通過Cron的PHP併發性

回答

0

不是PHP有fork()?雖然這不是真正的多線程,但它是共同例程的基本方式。

2

那麼,如果你需要它作爲一個cronjob,繼續。如果你想要多個進程,你很可能想用pcntl_fork來創建同一個腳本的多個實例。

1

根據您想要對這些作業做出反應的速度有多快,並且如果您要執行處理器密集型任務,則還可以使用排隊系統分散處理。如果您有多個內核/處理器,請檢查每個機器有多個工作人員的Gearmanbeanstalkd

0

使用cron的一個問題是,它將按照設置的間隔執行腳本的副本,而不管已經運行了多少個腳本進程。這意味着腳本需要相互通信的方式,以便最多N個腳本可以同時運行(多餘腳本可以立即退出)。

cron的替代方案可能是supervisord,它將執行可配置數量的腳本並監視每個腳本,以便任何退出都重新生成。