2

新しいプロジェクトでは、大きな XML ファイル (200MB 以上) を mySQL データベースにロードする必要があります。それと一致させる必要がある +-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 単位で取得することはできません。

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

Ps は xml-feeds を簡単に一致させるアイデアを誰か持っていますか?

4

5 に答える 5

2

大きな xml ファイル (または一般に大きなファイル) を解析する必要がある場合は、すべてを同時にメモリに格納する必要がある関数よりも、ストリーム ベースの関数を作成する方が適切な戦略です。PHP にはXmlReaderというクラスがあり、一度に 1 つのノードでファイルをスキャンできます。それを使用するためにコードを変更するのは簡単ではないかもしれませんが、変更を検討することはできます。

于 2009-10-31T14:17:34.137 に答える
1

これで修正されるはずです:

ini_set('memory_limit', -1);
于 2009-10-31T13:02:43.657 に答える
1

それについては、少し前にブログ記事を書きました。解決策は、XMLReader を使用して XML のチャンクをオブジェクトに読み込み、それを処理することでした。

于 2011-05-26T06:32:55.290 に答える
0

スクリプトに ini_set('memory_limit', '150MB') を追加します。

于 2009-10-31T13:04:21.540 に答える
0

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

于 2009-11-01T00:31:34.760 に答える