在 PHP 中,如何测试文件是否已被锁定flock
?例如,如果另一个正在运行的脚本调用了以下内容:
$fp = fopen('thefile.txt', 'w');
flock($fp, LOCK_EX);
在 PHP 中,如何测试文件是否已被锁定flock
?例如,如果另一个正在运行的脚本调用了以下内容:
$fp = fopen('thefile.txt', 'w');
flock($fp, LOCK_EX);
if (!flock($fp, LOCK_EX|LOCK_NB, $wouldblock)) {
if ($wouldblock) {
// another process holds the lock
}
else {
// couldn't lock for another reason, e.g. no such file
}
}
else {
// lock obtained
}
如文档中所述,用于LOCK_NB
进行非阻塞尝试以获取锁,并在失败时检查$wouldblock
参数以查看是否有其他东西持有锁。
像这样检查它:
if (!flock($file, LOCK_EX)) {
throw new Exception(sprintf('File %s is locked', $file));
}
fwrite($file, $write_contents);