问题
In PHP, how can I test if a file has already been locked with flock? For example, if another running script has called the following:
$fp = fopen('thefile.txt', 'w');
flock($fp, LOCK_EX);
回答1:
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
}
As described in the docs, use LOCK_NB
to make a non-blocking attempt to obtain the lock, and on failure check the $wouldblock
argument to see if something else holds the lock.
回答2:
Check it like this:
if (!flock($file, LOCK_EX)) {
throw new Exception(sprintf('File %s is locked', $file));
}
fwrite($file, $write_contents);
来源:https://stackoverflow.com/questions/20771824/test-if-file-is-locked