0

私の会社の Web サイトでは、ユーザーが Excel ファイルをアップロードして注文をアップロードできるようにしています。このファイルがアップロードされると、詳細が読み取られ、必要なすべての注文が作成され、必要な注文 ID を含む列がユーザー ファイルに追加され、ユーザーに送り返されます。

私が直面している問題は、504 ゲートウェイのタイムアウトです。タイムアウトの原因を正確に診断することはできません。

HA_PROXY ロード バランサーと PHP を使用したアプリケーション サーバーがあります。

タイムアウトの問題の原因を特定するにはどうすればよいですか? HA_PROXY、Apache、またはユーザーのブラウザですか?

PS: ユーザーに送信されるリターン ファイルは、サーバーの PHP の一時ディレクトリに存在しますが、接続がタイムアウトしたため、ユーザーに返されません。

4

3 に答える 3

1

私はそれがかなり確信していますHA_PROXY

私たちのセットアップでもそれを取得しました:サーバーはまだ彼がしていることを終了します(したがって、それはサーバーではなく、set_time_limit(0)機能しません)、ユーザーはサーバーに(私が推測)HA_PROXY可能です。

サーバーの場合、サーバー自体での実行が短くなり、ファイルが完全にアップロードされません。

ブラウザでしたら、別のブラウザを使うと違いが出てきます。

私はサーバーを保守しているわけではなく、(デバッグしない限り)とにかく出力がないcronスクリプトでのみ発生したため、調べたことがないため、どうすればよいかわかりません。

于 2012-09-28T10:01:49.220 に答える
1

リアルタイムでユーザーに送り返す必要がある場合は、このコードをファイルの先頭に追加する必要があります。

set_time_limit(0);

そして、あなたの説明から、非同期処理を使用できると思います。

ファイルがアップロードされたら、ユーザーに「処理中」と応答できます。

次に、別の URL に Ajax リクエストを書き込んで、10 秒ごとにファイルがダウンロードに適しているかどうかを確認します。

stat.php?id=file_id

準備ができている場合は、次のようにページをダウンロードにリダイレクトできます。

down.php?id=file_id

于 2012-09-28T10:05:10.663 に答える
0
set_time_limit(0)

ファイルのアップロード時間を増やすこの方法

于 2012-09-28T09:59:06.593 に答える