ユーザー入力によって行を削除するサンプル php スクリプトを考えてみましょう。
$DELETE_LINE = $_GET['line'];
$out = array();
$data = @file("foo.txt");
if($data)
{
foreach($data as $line)
if(trim($line) != $DELETE_LINE)
$out[] = $line;
}
$fp = fopen("foo.txt", "w+");
flock($fp, LOCK_EX);
foreach($out as $line)
fwrite($fp, $line);
flock($fp, LOCK_UN);
fclose($fp);
一部のユーザーが現在このスクリプトを実行しており、ファイル「foo.txt」がロックされているかどうかを知りたいのですが、同時またはその実行が完了する前に、他のユーザーがこのスクリプトを呼び出した場合、何が起こりますか? 2 番目のユーザーのプロセスは、最初のユーザーによるファイルのロック解除を待ちますか? または 2 番目のユーザー入力による行の削除は失敗しますか?