31

PHPのデフォルトに設定するのに最適な値を調べています。について多くの矛盾する点を見てきましたmax_input_time

この回答は、ファイルのアップロードはタイマーにカウントされないと彼が信じていることを示しています: https://stackoverflow.com/a/3758522/518169

公式の PHP ドキュメントには、次のような大きな赤い警告があります。

max_input_time は、スクリプトが入力を受信できる最大時間を秒単位で設定します。これにはファイルのアップロードが含まれます。大きなファイルや複数のファイル、または低速の接続を使用しているユーザーの場合、デフォルトの 60 秒を超えることがあります

ソース: http://php.net/manual/en/features.file-upload.common-pitfalls.php、最終更新日: 2012 年 7 月 6 日 (金)

したがって、これはファイルのアップロードmax_input_time に影響を与えるようであり、訪問者が低速またはモバイル接続からでも 20 MB のファイルをアップロードできることを確認するには、デフォルト値の 60 では十分ではありません!

この値を何に設定することをお勧めしますか? 300?

また、 と の間に関係はmax_execution_timeありmax_input_timeますか?たとえば、そのようなものは?max_execution_timeよりも大きくする必要があります。max_input_time

4

4 に答える 4

21

いくつかの簡単なベンチマークの後、接続が遅いユーザーによる大規模なアップロードの処理には何の関係もないと思います.max_input_time

http://us3.php.net/manual/en/info.configuration.php#ini.max-input-timeから

これは、スクリプトが POST や GET などの入力データを解析できる最大時間を秒単位で設定します。これは、サーバー上のすべてのデータを受信した瞬間からスクリプトの実行が開始されるまで測定されます。

私はPHP 5.3.8を使用しており、次の.htaccess構成を使用しました

php_value max_input_time 5
php_value max_execution_time 1
php_value upload_max_filesize "2048M"
php_value post_max_size "2048M"

私のテストスクリプトは次のとおりです。

<?php
if (!empty($_FILES)) {
    echo '<pre>';
    var_dump($_FILES);
    echo '</pre>';
}
?>
<form enctype="multipart/form-data" method="POST">
    File: <input name="userfile" type="file" />
    <input type="submit" value="Upload" />
</form>

いくつかの試行で、私の 1.5G ファイルはアップロードに約 16 ~ 17 秒、処理に 4 ~ 5 秒かかり、実行時間は基本的に 0 です。

max_input_time 5スクリプトで完了します。4に設定すると、次のようになりますPHP Fatal error: Maximum execution time of 4 seconds exceeded in Unknown on line 0, referer: http://localhost/test-upload.php

またmax_execution_time、テスト全体で 1 に維持したため、関係がないように見えます。

于 2012-07-09T13:04:43.193 に答える
6

PHP が Web サーバーにどのようにブリッジされているかによって異なります。

技術的には、Web サーバーがリクエスト ヘッダーを受け取るとすぐに PHP を呼び出すことが可能です。その場合、PHP は、リクエスト変数を設定できるようになるまで、POST データがインターネットに送信されるのを待っていることになります (可能性は十分にあります)。 max_input_time を超える可能性があります)。しかし、より一般的には、ウェブサーバーは完全なリクエストを受け取るまで PHP の呼び出しを遅らせます (max_input_time を超える可能性はほとんどありません)。

于 2012-07-09T13:43:31.037 に答える
2

PHP 5.4 以降、PHP ファイルのアップロードは max_input_time の影響を受ける可能性があります。最近、アップロードに 60 秒以上かかったファイルで 500 エラーが発生しました。php.ini でこの単一の値を変更したところ、消えてしまいました。

さらに、マニュアルの文言は、受け入れられた回答で引用されているものとは異なります。それは今言う:

これは、スクリプトが POST や GET などの入力データを解析できる最大時間を秒単位で設定します。タイミングは、サーバーで PHP が呼び出された時点で開始され、実行が開始された時点で終了します。

PHP 5.4.16 nts と IIS 7.5 を使用していました。どうやら、ファイルがアップロードされる前に PHP が呼び出されます。

注意すべき興味深い点の 1 つは、私の PHP エラー ログに間違ったエラーが記録されていることです。彼らは、「PHPの致命的なエラー:最大実行時間が10000秒を超えました...」と述べました。max_execution_time を何に設定しても問題ありませんでした。新しい番号でも同じエラーが発生します。

于 2016-01-14T17:08:02.780 に答える