在我的系統中,我安排了一個PHP作業來運行每分鐘。如何檢查php作業實例
現在我想,如果此作業的1個實例正在運行並且需要超過1分鐘,那麼在每分鐘後啓動的新實例將檢查以前是否有任何實例正在運行,並且是否有以前的實例正在運行,殺死自己...我正在嘗試系統()命令,但無法弄清楚。
任何請求
在我的系統中,我安排了一個PHP作業來運行每分鐘。如何檢查php作業實例
現在我想,如果此作業的1個實例正在運行並且需要超過1分鐘,那麼在每分鐘後啓動的新實例將檢查以前是否有任何實例正在運行,並且是否有以前的實例正在運行,殺死自己...我正在嘗試系統()命令,但無法弄清楚。
任何請求
對鎖定文件使用獨佔文件鎖定。只要進程結束執行,鎖就會自動釋放。
<?php
$fp = fopen("/var/tmp/your.lock", "w");
if (!flock($fp, LOCK_EX|LOCK_NB)) { // try to get exclusive lock, non-blocking
die("Another instance is running");
}
[... continue with the script ...]
有幾種解決方案。所有人共同的事情是在作業開始時設置一個標誌,並在作業完成時清除標誌。工作開始時檢查該標誌的存在。
在僞代碼:
if (flag is set)
exit
set flag
do some stuff
clear flag
您可以創建一個文件作爲標誌實例。或者你可以在memcache中創建一個密鑰並將其用作你的標誌。或者一個數據庫,或其他東西。
的第二個實例等待太多時間.... – Harikrishnan 2014-10-30 10:33:06