MySQLデータベースに大きなXMLファイルをロードします(PHP)
-
11-09-2019 - |
質問
新しいプロジェクトのために私は、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をロードするためのより効率的な方法があります..
所属していません StackOverflow