PHPでは、fopenx
を実行するときにフラグを使用できます。
作成して書き込み専用に開きます。ファイルポインタをファイルの先頭に置きます。
ファイルがすでに存在する場合、fopen()呼び出しは、FALSEを返し、レベルE_WARNINGのエラーを生成することによって失敗します。
ファイルが存在しない場合は、作成してみてください。これは、基礎となるopen(2)システムコールにO_EXCL|O_CREATフラグを指定することと同じです。
これは、(異なるユーザーからの)同時fopen要求がいくつあっても、ファイルが1回だけ作成され、上書きされないことが保証されていることを意味しますか?
if ($handle = fopen("part006", "x+b")) {
do_some_processing();
echo "You managed to process.";
/*
can we guarantee that only 1 user (http request)
will ever process the function and see the
message "you managed to process" ?
*/
} else {
echo "You failed to process.";
}