質問

私の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

の周囲の欠けている二重引用符を注意してください

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top