質問

新しいプロジェクトのために私は、MySQLデータベースに大きなXMLファイル(200メガバイト+)をロードする必要があります。私は(ないすべてのフィールドが同じである)ことと一致する必要がある20個のフィード

- +があります。

今私はXMLをキャッチしたいとき、私はこのエラーを取得します:

Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 171296569 bytes) in E:\UsbWebserver\Root\****\application\libraries\MY_xml.php on line 21

このための簡単な解決策はありますか?これは、数MBの各部分でTEフィードを取得することはできません。

ありがとうございました!

P.s。やすいですか?

-XMLフィードと一致するように、誰かのアイデアを持っています
役に立ちましたか?

解決

このはそれを修正する必要があります:

ini_set('memory_limit', -1);

他のヒント

あなたは大きなxmlファイル(または、一般的に大きなファイル)を解析する必要がある場合は、それは同時にメモリにあるように、すべてを必要とするものよりも、ストリームベース関数を記述するためのより良い戦略です。 PHPは、あなたがをスキャンすることができますたXmlReaderすると呼ばれるクラスを、持っていますファイル、一度に1つのノード。それはそれを使用するようにコードを変更するのは簡単ではないかもしれないが、あなたが変更を加えることを検討してください。

私はしばらく前にそれについてのブログエントリで。ソリューションは、オブジェクトにXMLのチャンクを読み、それで物事を行うにするXMLReaderを使用することでした。

スクリプトにini_set( 'のmemory_limit'、 '150メガバイト')を追加します。

PHPは、あなたが仕事のために検討する唯一のプログラミング言語ですか?あなたは、Javaを使用する場合は、XMLをロードするためのより効率的な方法があります..

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top