我正在使用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';
当从不同的浏览器同时调用文件两次时,脚本可以正常工作,而如果我从同一个浏览器同时打开两个实例,它会等待,即第一个调用获取锁定,第二个调用等待锁定而不关闭
我知道可能有其他方法可以检查文件实例是否已经在工作,但他们中的大多数人会做某事然后撤消它,在我的用例中,脚本可能随时结束,因为它可能需要很长时间或超过内存限制或出于任何原因
有什么帮助吗?