0

膨大なデータソース(14.9M行のXML、1.7GB)を解析する必要があります。

XMLReaderを使用してこれを行うのに問題があります。以前はSimpleXML以外は必要ありませんでしたが、このワッパーをメモリにロードできないことを考えると、ストリームを介してこれを行う必要があります。

私はこのコードを書きました:

<?php

$xml = new XMLReader(); 
$xml->open('public.xml'); 


while($xml->read())
{
    echo '.';
}
$xml->close();
?>

しかし、実行に問題があります。つまり、「致命的なエラー:最大実行時間が30秒を超えました...」というメッセージが表示されます。

set_time_limit(600)を実行すると、ブラウザがクラッシュします。

「。」の数を処理できないため、クラッシュしています。作成した?

ここで何をお勧めしますか?最終的には、このXMLファイルをリレーショナルデータベースに入れる必要があります。スキーマの詳細に入る前に、実現可能性をテストしています。

4

2 に答える 2

1

「。」の数を処理できないため、クラッシュしています。作成した?

これをテストするには、 なしで試してみてくださいecho '.';
これには大量の RAM が必要なので、スクリプトが使用できる最大メモリを増やします。最終的に XML ファイルを小さな部分に分割し、それらを順番に処理します。

最終的に見てください:

于 2013-02-11T22:57:27.180 に答える
0

PHP のメモリ制限も拡張する必要があります。

于 2013-02-11T22:46:21.997 に答える