これは、競合状態に関してアップロードされたファイルを移動する安全な方法ですか?
do {
$file = $path . "/" . uniqid() . '.' . $ext;
$fh = @fopen($file, 'x');
} while( ! $fh);
move_uploaded_file($src, $file);
UPD問題を解決する他の方法を学ぶことに加えて、このコードが競合状態の影響を受けるかどうかを知りたいです。AFAIU、「x」モードの fopen および move_uploaded_file はアトミックであるため、衝突は発生しません。
それに加えて、「uniqid で十分」に関して、 tempnam へのコメントで、競合状態を避けるために「x」モードで fopen を使用する必要があると述べた人が何 人かいます。彼らは過度に妄想的ですか?コードが大幅に複雑にならなければ、より安全なソリューションを使用する方がよいと思います。