PHP の flock に関する問題
flock の問題については、私のブログにまとめました。 http://www.shionco.com/archives/php_flock.html
ルーチン コード:
$fd = fopen('./a.html', 'wb');
if ($fd) {
if (@flock($fd, LOCK_EX|LOCK_NB)) {
echo 'ロック解除されました、ファイルを開いてロックします';
sleep(10);
} else {
print 'ロックされました、ファイルを閉じます';
fclose($fd) ; > } else {
echo 'ファイルを開けませんでした';
}
FF の下に 2 ページを作成し、最初のページを開いて実行し、排他ロックが成功し、拡張子を入力しました現在の状態では、2 番目のページが開かれ、すぐに実行されます。その結果、最初のページが完了すると、2 番目のページも排他的にロックされ、実行が完了すると遅延状態になります。明らかに LOCK_NB が使用されていますが、排他ロックは発生しません。新しいタブであっても、新しいウィンドウであっても、ブロックされます。
ただし、IE (私は IE9 を使用しています。他はテストしていません) では、同じプロセスでページ 2 の直接排他ロックが失敗し、「ロックされました、ファイルを閉じます」と出力されます。
そうすると、FFのクライアントが内容が更新されたキャッシュファイルを大量に閲覧するとブロックされてしまうのではないでしょうか?
-----解決策---------
これを確認して、上記のコード
を含むファイルを作成できます。タブ付きブラウザを使用して 2 つのファイルを別々に開き、ニーズを満たしているかどうかを確認してください。 。 「はい」の場合、上記の理由です