PHP がライブラリを読み込んで XML ファイルを生成します ライブラリには 60W 以上のレコードがあると言われています。php+mysql を使用してループでライブラリを読み込んで XML ファイルを生成します。 次に、各 xml ページに 1000 レコードを保存する準備をします。これは、60 ページを超える xml ファイルを生成することを意味します。 ここで問題が発生します。xml ファイルが 13 ページに生成されるたび、つまり、ライブラリ内の 134,000 エントリが読み取られると、ページはエラーを報告します: 致命的なエラー: 許可されたメモリ サイズ134217728 バイト中が使い果たされました (80 バイトを割り当てようとしました) 何が起こっているのかを理解するのを誰か手伝ってくれませんか? 何をするか? 彼にすべてのページを正常に生成させる方法 心優しい人々の安全な生活を祈ります! -----解決策---------------------------- - 割り当てられたメモリが不足しています。 これを使用して、php.ini を変更して、memory_limit = 128M を見つけ、より大きなサイズに変更します。
------解決策--------- php.ini 設定ファイルのmemory_limit設定を超えていますメモリには制限があります (デフォルトは 128MB、134217728 バイト)。 128MB あれば十分です。ループすると 1,000 レコードごとに変数に保存されるのでしょうか。代わりに、1,000 個の変数を読み取って PHP 変数に保存し、次に XML ファイルを書き込み、別の 1,000 個の変数を読み取り、それらを同じ変数に保存してから、XML ファイルを書き込むことができます。 。 。
------解決策---------------------- メモリが制限を超えています。メモリを増やしてみてください。 php.ini のメモリ制限。 ループ読み取りの数を増やし、各ループの最後で unset() mysql_free_result() を実行して不要なメモリを解放することをお勧めします。
------解決策---------------------- キーコードを送信して確認してください。
------解決策---------
話し合う サーバー設定ファイルを変更しない場合、他の方法はありますか?
------解決策---------
話し合う メモリが制限を超えています。php.ini でメモリ制限を増やすことができます。 ループ読み取りの数を増やし、各ループの最後で不要なメモリを解放するために mysql_free_result() を unset() することをお勧めします
-----解決策--------- メモリが足りない、
方法は:
1. プログラムが使用できるメモリを増やします ini_set('memory_limit', '???M');
2. プログラムが使用しているメモリを減らします。コードを参照してください。
------解決策---------------------- 正しく数えたら600以上あるはずですページ
mysql 接続の代わりに mysql_free_result() を使用して、一度に 10 ページを解放します。この小さなデータを処理できないとはまだ信じていません。
-----解決策--------- データ自体に問題がない限り、バッチで読み込む サーバーに制限があり、パラメーターを変更できない場合は、データをダウンロードしてローカルで処理できます。
Quote: me 計算が正しければ、600 ページ以上になるはずです mysql リリース 10 ページの代わりに mysql_free_result() を使用して結果セットを解放します。データを処理できません 兄さん、その通りです。600 ページ以上あります。でも、兄さん、本当に大丈夫ですか?
------解決策---------
話し合う
ここで問題が発生します。xml ファイルが 13 ページに生成されるたび、つまりライブラリから 13,000 項目が読み取られるたびに、ページでエラーが報告されます: 致命的エラー: 許容メモリ サイズ 134217728 バイトが使い果たされました。 (しようとした……
------解決策----------------------
コードを投稿して見てください。
------解決策----------------------
もう 1 つの考えられる状況は、データベースにクエリを実行して返すことです。結果セットの平均レコード長は比較的長くなります (たとえば、平均合計レコード長は 120KB を超えます)。 mysql_query の代わりに mysql_unbuffered_query を使用してみることができます。
------解決策---------
話し合う
504 ゲートウェイ タイムアウト ------------------------------------- ----------- -------- nginx/0.6.35
------解決策---------
504 ゲートウェイ タイムアウトがタイムアウトしました
PHPタイムアウトではなく、NGINXタイムアウトです。処理中にエコーがないため DOMDocument は大量のメモリを消費します
アプリケーションには適していない可能性があります
XML 構造を投稿して確認できます。SQL でアセンブルされる可能性があります
------解決策---------
504 ゲートウェイ タイムアウトについては、 http://www.google.com.hk/search?client=aff-cs-360chromium&ie=UTF-8&q=504+Gateway+Time-out
議論する必要はありません サーバーに権限がないのでコマンドラインから実行しても問題ありません