PHP:ファイルの排他ロックが取得されませんでした
質問
私のphpスクリプトでは、文字列を解析した後、ファイルにデータを入力する必要があります(存在しない場合は作成後)。書き込みファイルの前に、問題を回避するための排他ロックが必要です。 これは私のコードです:
foreach ($elements[0] as $current) {
$file_handler = fopen($my_folder . "/" . $current . ".txt", "a");
$locked = flock($file_handler, "LOCK_EX");
while (!$locked) {
usleep(500000);
$locked = flock($file_handler, "LOCK_EX");
}
//got lock
fwrite($file_handler, $mystring . "\n");
//release lock
flock($file_handler, LOCK_UN);
fclose($file_handler);
}
return;
.
今、何かがうまくいかないようです。 FOPENファイルを作成しますが、コードが内側にループに入るように見えます(ファイルが作成されますが、内部は何も書き込みませんでした)。何が問題なのですか?
解決
定数の代わりに文字列としてロックするための引数を渡しています。
試してみてください:
$locked = flock($file_handler, LOCK_EX);
.
lock_ex
の周囲の欠けている二重引用符を注意してください所属していません StackOverflow