我正在使用rc.local在ubuntu 16.04 virtua计算机启动时执行以下bash脚本。
#!/bin/bash
# Loop forever (until break is issued)
(while true; do
sudo php /var/www/has/index.php external communication
done ) &
如您所见,bash连续执行php脚本。随着时间的流逝,脚本可能需要更长的时间才能执行。有时,即使正在运行同一脚本的另一个实例,上述脚本仍会继续启动。因此,我想知道如果存在实例,如何阻止php脚本的新实例执行?
答案 0 :(得分:3)
您可以使用文件锁定来获取排他锁定。如果存在该锁,则可以结束脚本或等待直到释放该锁。
我建议您阅读http://php.net/manual/en/function.flock.php
$fp = fopen("/tmp/lock.txt", "r+");
if (flock($fp, LOCK_EX)) { // acquire an exclusive lock
// Execute logic
} else {
echo "Couldn't get the lock!";
}