1

前にnginxをWebサーバーとして使用する場合、PHP設定のmax_input_timeは関連していますか?

一部始終:

訪問者がファイルをアップロードしている場合を考えてみましょう。ポート 80 でリッスンしている nginx ウェブサーバーが最初にリクエストを受け取ります。

Nginx 自体には client_header_timeout 設定がありますが、ファイルのアップロードはリクエスト本文で処理されるため、これはそれほど重要ではありません。client_body_timeout は最大時間です。クライアントは、ファイルとその他の POST データを含むこのリクエスト ボディを送信できます。このデータのサイズは client_max_body_size で制限できますよね?

PHP はデータを待機します。この時間は max_input_time によって制限されます。そして、すべてのデータが揃ったら、リクエストボディが post_max_size の制限を超えていないことを確認し、それを解析して、ファイルが upload_max_filesize の制限を超えていないことを確認します。これで、php-script が実行されますが、max_execution_time よりも長くはかかりません。

しかし、私の fastcgi-proxy はいつロードされますか? リクエストヘッダーがロードされた後ですか、リクエストボディがロードされた後ですか、それともいつトリガーされますか?

または...この質問を別の言い方をすると、nginx Webサーバーに支えられたPHP-FPMを使用してPHPを実行している場合、PHP構成max_input_timeはまったく関係がありますか? ビジターの帯域幅が悪いが巨大なファイルをアップロードしたい場合、この値を増やす必要がありますか? それとも client_body_timeout の nginx 設定を増やすだけで十分ですか?

仮定が正しくない場合は修正してください!

4

1 に答える 1

1

答えを出すために、それは私にとって便利です:

18MB のファイルをアップロードしようとしたところ、50 秒以内にアップロードできました。fastcgi-proxy は 10 秒に制限されていました。したがって、私にとっては、nginx が fastcgi-proxy に送信する前にリクエスト全体をキャッシュしているようです。

要するに、いいえ。私の場合、max_input_time を超える必要はありません。

これは、構成によって異なる場合があります。コードを知っていて、これがどのオプションに依存しているかを知ることができる人がいれば問題ありません。

IRC では、nginx が fastcgi-proxy にデータを送信するとき、誰も本当に教えてくれませんでした ...

編集:

ここで私の提案を確認する別のリソースを追加したかっただけです。

残念ながら、PHP はアップロードが完了して [...]

Does session upload progress work with nginx and php-fpm? で受け入れられた回答を参照してください。

于 2013-04-24T08:32:55.453 に答える