2009-07-31 9 views
3

ページ要求ごとにPHPを使用して大きなXMLファイルを解析するコストはいくらですか?PHPとXML:大量のXMLファイルをページリクエストごとに解析するコスト

HTMLでカスタムタグを実装したいと思います。

<?xml version="1.0"?> 
<html> 
    <head> 
     <title>The Title</title> 
    </head> 
    <body> 
     <textbox name="txtUsername" /> 
    </body> 
</html> 

私はPHPで、このXMLファイルをロードした後、私はXPathを使用してカスタムタグを検索し、それらを操作したり、交換してください。

これは非常にコストがかかりますか、それとも問題ありませんか? これを大規模なWebサイトに適用するとどうなりますか?

以前は大規模なサイトでもXSLTを使用していましたが、状況が遅くなるようには見えませんでした。これはXSLTと何とか似ていますが、マニュアルです。

答えて

1

DOMXPathのような組み込み関数を使用し、xmlファイルが大きすぎない限り、xmlの解析は高速でなければなりません。

しかし、私はむしろ、関数呼び出しでカスタムタグを交換し、あなたがPHPで任意の文字列操作をやっていないことから、たくさん速くする必要がありますPHPのファイルを、含まれます:

<?xml version="1.0"?> 
<html> 
    <head> 
     <title>The Title</title> 
    </head> 
    <body> 
     <?php textbox('txtUsername') ?> 
    </body> 
</html> 
+0

これは私が現時点で使用しているものです<?= HTML: :TextBox( 'txtName')?> しかし、XMLははるかに強力で、jQueryのようなDOMElementsではなくサーバー側で属性の置換を行うことができます。ご提案いただきありがとうございます。 –

2

私はかなりコストがかかると思いますが、自分でテストして、スクリプトの実行に必要なピーク時のメモリ使用量と時間を測定するのが最善の方法です。

重度のXML解析を毎回行う必要がないように、中間状態をキャッシュすることができます。おそらく、タグをSmartyのような実際のPHPコードに置き換えて、生成/キャッシュされたPHP代わりにファイル。

キャッシュされたファイルは、Soulmergeの回答のコードのように見えます。

+1

+1。可能であれば、生成されたページをキャッシュして、すべての解析を排除します。 – You

+0

@You:生成されたページのみをキャッシュした場合、ページの任意の部分が変更されたときにXMLを再解析する必要があります。問題がある場合としない場合があります –

2

これは非常にコストがかかりますか、それとも問題ありませんか?

推測しないでください。 Measure

+0

私はそれを測定し、私のサーバー上では雷が速いです。しかし、私はこの質問を、大規模なWebサイトでうまくいくかどうか確認するよう求めました。 –

+3

それから大きい負荷の下でそれを測定してください。 Siege(http://www.joedog.org/index/siege-home)のようなツールを使うことができます。パフォーマンスは本当に主観的なことです。 1つのアプローチは、サポートできる秒数を見つけてそこからあなたの判断を下すことです。キャッシュされたバージョンと比較して、理論上の最適なソリューションがあなたに与える効果を確認できます。 – troelskn