Perl でかなり基本的な webapp を作成し、.xml を使用して XML ファイルを処理しますXML::Twig
。XML::Twig
これらの XML ファイルはかなり大きく複雑なので、「一度にすべてをロードする」方法ではなく、意図的にチャンクごとに変更する方法を使用しています。
ただし、チャンク方式を使用している場合でも、大きな XML ドキュメントを読み込むと、この Web アプリケーションは完全にクラッシュして停止します。Web アプリケーションが 1and1.co.uk との共有サーバーでホストされており、Apache エラー ログ ファイルが表示されないため、これがなぜ起こったのかについての手がかりを得ることができませんでした。呼び出しをeval{}
ブロックにラップしても、死ぬのをキャッチできませんでした。厄介なことに、自宅の開発サーバーでは問題なく動作するため、問題を再現できませんでした。
それを機能させるために、parse()
メソッドを使用して XML 全体を含むスカラーを渡す代わりに、XML をファイルに書き込んで代わりに使用するように変更しましたparsefile( $filename )
。その変更を行ったところ、うまくいきました。
私はこれに少し混乱しています.Googleの驚異を介して、parsefile()
実際にそれがより効率的であるかどうかを調べようとしましparse()
たが、何も見つかりませんでした. 誰かがたまたま知っていますか?