私は次の問題を抱えています:
- 大きなメモリ プロセスを実行していますが、メモリ負荷を小さなチャンクに分割しているため、CPU タイムアウトの問題はありません。
- サーバーでは、サイズが約 100kb の .xml ファイルを作成していますが、それらは約 100+ で作成されます。
- 現在の主な問題は、ブラウザーが応答タイムアウトを表示し、IE が下 (ステータス バーのすぐ上) に .php ファイルのダウンロード メッセージを表示することです。
- この間、バックエンド (サーバー側) プロセスは引き続き実行され、.xml ファイルを増分順に作成し続けます。それで問題ありません。
次のphp.ini構成があります。
max_execution_time = 10000 ; Maximum execution time of each script, in seconds
max_input_time = 10000 ; Maximum amount of time each script may spend parsing request data
memory_limit = 2000M ; Maximum amount of memory a script may consume (128MB)
; Maximum allowed size for uploaded files.
upload_max_filesize = 2000M
私はIEでサイトを運営しています。そして、PHP 5.3でZSCEを使用しています
この問題について誰かが適切な方法で私をリダイレクトできますか?
編集:
タイムアウトの画像をアップロードしているため、.php ファイルのダウンロードを要求しています。
編集2:
実行フローを簡単に説明します。
- 各クラス階層から Function1() の実行を開始するクラス階層のオブジェクトを含む 1 つの PHP ファイルがあります。
- クラスファイルがあります。
- まず、XML ファイルをチャンクで作成するロジックを含む Function1() が実行されるとします。
- 次に、Function2() が実行され、Function1() によって生成された出力が表示されるとします。
すべてがクラス階層方式で行われます。そのため、実行されるまで Function1() の実行を途中で終了することはできません。その後、 Function2() が呼び出されます。
編集3:
あなたがいくつかのクロス質問をしたので、私はいくつかの点に同意しますが、問題についてさらに詳しく説明させてください.
最初に、一度に約 100 MB 以上のサイズの XML ファイルを読み込んでいたため、ローカル セットアップのメモリがハングし、マシン上のすべてが停止し、CPU 時間が最大限のリソースを使用していました。
次に、この大きなサイズの XML ファイルを小さなサイズに分割しました (一度に 1 つの XML ファイルをロードし、使用後にアンロードしていることを意味します)。これにより、ローカル セットアップでのメモリの過負荷と CPU の問題を回避できました。
現在、バックエンド プロセスは CPU またはメモリの問題を実行していませんが、問題はブラウザのタイムアウトにあります。私もcURLを試しましたが、現在の構造によれば、クラス階層の問題のために適合しているようです。階層内に一連のクラスがあり、それらはすべて最初に Process 関数を実行し、次にすべて Output 関数を実行します。したがって、プロセス関数が実行されるまで、出力関数は表示されないため、ブラウザにタイムアウトが表示されます。
@vortex が提案した指示にも従いましたが、ほとんど成功しませんでしたが、探しているものではありませんでした。処理機能が必要なXMLファイルを一括で作成するため、ブラウザへの出力に時間がかかりすぎてcURlを実装できなかった理由。プロセス関数はそれほど時間がかかるため、完了するまで出力をクライアントに割り当てることはできません。
cURL 出力:
URL....: myurl
Code...: 200 (0 redirect(s) in 0 secs)
Content: text/html Size: -1 (Own: 433) Filetime: -1
Time...: 60.437 Start @ 60.437 (DNS: 0 Connect: 0.016 Request: 0.016)
Speed..: Down: 7 (avg.) Up: 0 (avg.)
Curl...: v7.20.0
test.txt ファイルの内容
* About to connect() to mylocalhost port 80 (#0)
* Trying 127.0.0.1... * connected
* Connected to mylocalhost (127.0.0.1) port 80 (#0)
\> GET myurl HTTP/1.1
Host: mylocalhost
Accept: */*
< HTTP/1.1 200 OK
< Date: Tue, 06 Aug 2013 10:01:36 GMT
< Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/0.9.8o
< X-Powered-By: PHP/5.3.9-ZS5.6.0 ZendServer
< Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/
< Cache-Control: private
< Transfer-Encoding: chunked
< Content-Type: text/html
<
* Connection #0 to host mylocalhost left intact
* Closing connection #0
免責事項: この質問に対する回答は、選択された回答に基づく最初の小さな成功に基づいて選択されます。この種の質問が発生した場合、@Hakre からの解決策も実行可能です。しかし、今のところ、私の質問を解決する答えはありませんが、少しです。ハクレの答えは、この種の問題についての詳細を見つけた人にとってはより詳細です。