通常の PHP 画像アップロード機能 (AJAX を使用しない) を考えてみると、大規模な画像のアップロードがときどき失敗するというこの問題が発生します。あるテスト サーバーではそれほど頻繁ではなく、別のテスト サーバーではより頻繁に失敗します。デバッガーがまだ問題のデバッグを開始しておらず、ファイル/フォルダーのアクセス許可の問題がないと仮定すると、どのように処理を進めればよいでしょうか?
私は持っていると確信していfile_uploads
ます。やみくもに安全な値を設定したり、機能するまで値を増やしたりしたくありません。基本的に、関連するモジュールとまったく同じ値にしたいと考えています。それが最善の方法である場合、関連するモジュールの設定を上書きする準備ができています。
ファイルのアップロードに関連する設定によると、これらはすべて関連する/関連する設定です -
* file_uploads
* upload_max_filesize
* max_input_time
* memory_limit
* max_execution_time
*post_max_size
関連するスクリプトのパラメーター/値の検索-スクリプト
によって実際に違反され、失敗の原因となっているパラメーター/値を見つけるには、まずスクリプトに対応する値を見つける必要があります。私のスクリプトの次の値を見つける方法:- アップロードされたファイルの合計サイズ
- 入力時間
- メモリ使用量
- スクリプト実行時間
- 投稿データサイズ
同じ目的で使用できるツール。PHP コードを使用すると、いくつかのことがわかると思います。
microtime(true)
スクリプト実行時間 -スクリプトの開始時と終了時の差。- アップロードされたファイルの合計サイズ -属性
$_FILES
の合計を見つけるためのForeach ループ['size']
メモリ使用量、入力時間などの残りを見つける方法は?
どこで/どのようにオーバーライドするか
最後に、違反している設定を見つけたら、2 つの設定の値を増やす/オーバーライドする必要があるとします。オーバーライドを適用する場所memory_limit
htaccessやPHPスクリプトで全てのモジュールに対してetc.を設定するのは正しくないと思います。むしろ、該当するモジュールのみに適用する方がよいでしょう。私は正しいですか?要求の少ないモジュールの設定
また、多くのリソースを必要としない他のモジュールについては、モジュールのリソース要件を慎重に検討した後、それらを削減するために設定をオーバーライドすることは良い/賢明ですか? 不要なリソース消費を削減できますか? もしそうなら、これらの設定の 2 つまたは 3 つの組み合わせ (プロジェクトの要件に応じて、通常のスクリプト、重いファイルのアップロードと名付けます) を用意し、単一の関数を呼び出して、すべてのモジュールの任意の組み合わせをロードするのはどうですか?memory_limit 注意事項
ここで言及されていること についてmemory_limit
-値を大きくしすぎると非常に危険です。複数のアップロードが同時に処理されると、使用可能なすべてのメモリが使い果たされ、多くのメモリを消費する他の無関係なスクリプトがサーバー全体にも影響を与える可能性があるためです。
これについてどのような一般的な予防措置を講じますか?
ありがとう、
サンディパン