我有一個用cron作業啓動的用PHP編寫的腳本。這是一個長時間運行的腳本,並且在最後一次完成之前,通常cron會踢出另一個實例。沒關係。我允許在任何給定時間運行此腳本的3個實例。PHP/Cron限制併發運行腳本的數量
我限制腳本使用此代碼3個實例在腳本的頂部:
exec('ps -A | grep nameofmyscript', $results);
if (count($results) > 4) {
echo "Already Running\n"
die(0);
}
它的工作原理,但我正在尋找一種更好的方式。這種方法在我重新編寫腳本幾周之前就對我產生了影響,並忘記更改該代碼行。當腳本命名與某個已經運行的進程類似時,它也會失敗。
這是比我目前的解決方案更好的方法。我可能必須使用basename(__ FILE__),因爲完整路徑不包含在ps輸出中。但是它仍然不能防止與系統上運行的類似命名的腳本發生衝突。 – mellowsoon 2011-02-15 02:35:04
@mellowsoon啊是的,`basename()`會更好,我忘了:P。如果你向我展示`ps -A`的輸出,我會給你寫一個正則表達式,它應該完美地匹配你的PHP文件。 – alex 2011-02-15 02:43:38