我正在使用php脚本来阅读我的应用程序的退回地址收到的电子邮件,并使用它们进行操作。该脚本计划与cron作业一起运行,但我无法控制它,我没有权限在服务器上写文件(因此几乎消除了文件锁定机制)。还有另一种方法可以确保我在任何给定时间只运行一个脚本实例吗?服务器正在运行linux。
答案 0 :(得分: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()
。
答案 1 :(得分:0)
它有点脏,但
if(file_exists("block.bin")) {
//already running
}
file_put_contents("block.bin", 1);
//do stuff
unlink("block.bin");