ホームページ >バックエンド開発 >PHPチュートリアル >XMLファイルソリューションを生成するためのPHP読み取りライブラリ

XMLファイルソリューションを生成するためのPHP読み取りライブラリ

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 13:39:07930ブラウズ

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議論する必要はありません
サーバーに権限がないのでコマンドラインから実行しても問題ありません


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。