11

PHP で、ファイルが既にロックされているかどうかをテストするにはどうすればよいflockですか? たとえば、別の実行中のスクリプトが次を呼び出した場合:

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

2 に答える 2

30
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引数をチェックして、他の何かがロックを保持しているかどうかを確認します。

于 2013-12-25T10:43:44.907 に答える
-3

次のように確認します。

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

fwrite($file, $write_contents);
于 2013-12-25T10:42:50.927 に答える