2

我正在使用 php 脚本来阅读应用程序退回地址收到的电子邮件并对其进行处理。该脚本计划与 cron 作业一起运行,但我无法控制它,并且我无权在服务器上写入文件(因此几乎消除了文件锁定机制)。是否有另一种方法可以确保在任何给定时间我只有一个脚本实例运行?服务器正在运行linux。

4

2 回答 2

1

我想你可以试试这个:

// we use ourselves as the lock file
if (false === ($f = fopen(__FILE__, 'r'))) {
    die("Could not open lock file");
}
if (false === flock($f, LOCK_EX)) {
    die("Could not obtain lock");
}
// do your stuff
flock($f, LOCK_UN);
fclose($f);

您不需要写权限来使用咨询锁;这当然是假设flock()在您的配置中启用。

于 2013-03-06T13:41:15.807 回答
0

它有点脏但是

if(file_exists("block.bin")) {
  //already running
}

file_put_contents("block.bin", 1);

 //do stuff

unlink("block.bin");
于 2013-03-06T13:41:28.630 回答