1
我有一個php腳本,處理並創建大量使用cron作業每5分鐘運行的圖像。我希望能夠限制這一點,以便每次只能運行一次,如果每次運行時間超過5分鐘,則不會重疊。PHP - 限制與flock的cron作業重疊()
flock()
似乎是實現這一目標的最佳方式,但我很難理解我應該如何將其添加到我現有的腳本中。我的cron作業是安裝運行下面的文件 -
images.php:
$array=array("Volvo","BMW","Toyota","Audi","Ford","Alfa","Porsche","Mercedes");
foreach ($array as $car) {
generateImageCustomFunction($car);
}
我想用這樣基於示例非阻塞鎖:
$fp = fopen('/tmp/lock.txt', 'r+');
if(!flock($fp, LOCK_EX | LOCK_NB)) {
echo 'Unable to obtain lock';
exit(-1);
}
fclose($fp);
是`lock.txt'只是一個存儲/指示鎖的純文本文件,或者是我試圖運行的實際文件 - 在這種情況下,images.php?
也在哪裏我實際上堅持我現有的代碼在上面?
這只是一個名爲「lock.txt」的文件。當你實際上有或沒有文本完全取決於你。文件的僅僅存在性應該足以表明你已經運行了你的腳本。例如'if(file_exists('/ tmp/lock.txt')){die(「Already running」); }' – 2014-09-30 15:29:03
問題是,如果腳本死了,文件在那裏運行第二個cron不會運行圖像部分,羊羣,當腳本死亡解鎖imediately – BojanT 2014-09-30 15:37:47
非常抱歉,如果這聽起來愚蠢但我不創建lock.txt文件首先,它僅在鎖定/運行時創建? – 2014-09-30 15:38:16