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