[英]Improve prevent php script run twice (with cronjobs)
我想改進下面的腳本,或者可能知道是否存在更好的重寫方法以獲得更好的結果。
我在兩個文件 cron1.php 和 cron2.php 上使用它,每 5 秒執行一次,並且需要防止運行兩次。
腳本執行時間取決於文件大小,大部分時間大約需要 2 秒,但對於大文件可能需要 25/30 秒,為此我需要停止執行。
我走對了嗎? 有什么改進的建議嗎?
$fp = fopen("cron.lock", "a+");
if (flock($fp, LOCK_EX | LOCK_NB))
{
echo "task started\n";
// Here is my long script
// Cron run every 5 seconds
sleep(2);
flock($fp, LOCK_UN);
}
else
{
echo "task already running\n";
exit;
}
fclose($fp);
我通常會執行文件操作,例如將getmypid
轉儲到鎖定文件中。 所以在外部我可以知道哪個 pid 鎖定了它。 在某些調試情況下,這很有幫助。 最后,完成后unlink
鎖定文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.