2011-07-01 12 views
7

php.iniでアップロード制限を3Mに設定しました。誰かが50MBのファイルをアップロードした場合、アップロードが3MBに達すると停止するのですか、アップロードが完了するまで続行しますか?次にファイルサイズを読み取り、ファイルを削除しますか?PHPのアップロードと帯域幅/トラフィックに関する質問

+1

3に達するとすぐに停止します。あなたはそれをテストする必要があります – Ibu

+0

@ Ibu:どのサーバーを使用していますか? – Piskvor

+0

apache *自体はポストサイズに制限があります。実際には別の価値があるとは思えません。http://httpd.apache.org/docs/2.0/mod/core.html#limitrequestbody –

答えて

5

WebサーバーとしてApacheを使用している場合、PHPは要求が完了するまで開始できません。アップロードの制限がの場合は、のアップロードが完了した後になります。 Apache の最初のは、のリクエスト全体をと受け取り、の場合にのみ、が適切なハンドラ(この場合はPHP)を呼び出します。進行中のHTTP要求を中止するサーバー側のメカニズムがないため、応答を返す場合は、要求全体が完了するまで待つ必要があります。

質問に答えるにはいいえ、アップロードは完全に完了します。 PHPの内部ロジックが、アップロードされたファイルサイズをチェックし、制限を超えていることを確認し、エラーが発生した場合はすぐに失敗します。あなたのPHPスクリプトはではありません。は実行する機会がありますので、ランタイムチェックには頼らず、実行されません。

+0

誰かがあなたを悪用し、毎月の帯域幅を無駄にしたり、大容量のファイルをアップロードすることで、トラフィックを無駄にするのではなく、AWSを使用して私に0.10セントを支払う必要がありますか? – BlackBrother

+0

@BlackBrother:はい、それは(少なくとも理論的には) Apacheの設定ディレクティブ 'LimitRequestBody'のドキュメンテーションは、http://httpd.apache.org/docs/2.0で役に立つかもしれないことを示唆しています。 /mod/core.htm l#limitrequestbody – Piskvor