我正在使用flock()函数通过获取临时文件上的锁来检查脚本的另一个实例是否已在运行,因此下一个实例应检查文件是否未锁定,否则它将停止
<?php
$fp = fopen("/var/tmp/your.lock", "w");
if (!flock($fp, LOCK_EX|LOCK_NB)) { // try to get exclusive lock, non-blocking
die("Another instance is running");
}
//my script
sleep(10);
echo 'completed successfully';
Run Code Online (Sandbox Code Playgroud)
如果我从同一个浏览器同时打开两个实例,即第一个调用获取锁定,第二个调用等待锁定而不是关闭,则在不同浏览器同时调用文件两次时脚本工作没有问题
我知道可能有其他方法来检查一个实例文件是否已经正在工作但是大多数都会做一件事然后撤消它并且在我的用例中脚本可能随时结束,因为它可能需要很长时间或超出内存限制或无论如何
任何帮助?