1

複数のファイルのアップロード スクリプトを使用しています。最初は、ファイルが存在するかどうかを確認し、存在する場合は一意の ID を追加してアップロードしていました。

それ以来、オプションを検討してきましたが、アップロードされるすべてのファイルに、元のファイル名の後に一意の ID を付けることにしました。

それから、if(file_exists)チェックが不要であるという問題が提起されたので、私の質問はまず、信頼性がどれくらいかというunique()ことであり、私が今行っていることは悪い習慣と見なされますか?

ありがとう。

//if(file_exists($newPath)){

        $name = pathinfo($fileName, PATHINFO_FILENAME);
        $fileName = $name . '__' .uniqid().  '.' .$fileExt;
        $newPath = $upload_dir .$newName;
//  }
4

1 に答える 1

1

私はユニークを使用していませんが、マニュアルには、マイクロ秒単位の現在の時刻に基づいていると記載されています。異なるソースで正確に同じマイクロ秒でファイルを作成する人がいないと仮定すると、これは信頼できます。

そうは言っても、uniqid() では、プレフィックス引数を使用します (これを複数の場所にデプロイする場合) - そして、問題ない可能性が高いです。

ただし、引き続き file_exists チェックを行います。パフォーマンスへの影響はまったく目立ちません。私はあなたの質問にそのように答えるところまで行きます:はい、その名前を使用する前にファイルが存在するかどうかを確認しないのは悪い習慣です-特に、動的に作成されたファイルがたくさんあるディレクトリに書き込んでいる場合ファイル。私の経験では、アプリケーションを台無しにする可能性のあるすべてのものをキャッチしたいと考えています。これは大きな問題です。ある時点で、たまたますぐに uniqid() と同じ名前を持つランダムなファイルをそこに投げ込まないようにするにはどうすればよいでしょうか? 答えが「何もない」場合は、必ずチェックを実行する必要があります。

お役に立てれば!

于 2013-07-24T20:03:02.143 に答える