我使用PHP函数flock来检查另一个进程是否正在运行,但有时该文件被MySQL进程使用。这是lsof命令的结果:
这是我的php脚本:
$list = [];
$handle_list = fopen("$backup path/log/list.txt", "a+");
if(flock($handle_list, LOCK_EX | LOCK_NB))
{
while(($buffer = fgets($handle_list, 4096)) !== false)
{
$buffer = str_replace(["\r", "\n"], '', $buffer);
$list[] = $buffer;
}
}
else
{
echo date('Y-m-d H:i:s'). " : ERROR : Another process running\n\n\n";
exit(-1);
}
如果没有MySQL进程锁定文件,脚本工作正常。我不知道MySQL什么时候可以使用文件?