测试文件是否被锁定

时间:2013-12-25 10:38:00

标签: php file-locking flock

在PHP中,如何测试文件是否已被flock锁定?例如,如果另一个正在运行的脚本调用了以下内容:

$fp = fopen('thefile.txt', 'w');
flock($fp, LOCK_EX);

2 个答案:

答案 0 :(得分:21)

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
}

docs中所述,使用LOCK_NB进行非阻塞尝试以获取锁定,并在失败时检查$wouldblock参数以查看其他内容是否存在锁定

答案 1 :(得分:-2)

检查如下:

if (!flock($file, LOCK_EX)) {
    throw new Exception(sprintf('File %s is locked', $file));
}

fwrite($file, $write_contents);
相关问题