質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

8850閲覧

xmlの処理速度を速くする

uverworld101nm

総合スコア172

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/08/10 14:31

simplexmlを扱っていますが、知っての通りsimplexmlだとxmlの処理速度が遅いです。
xmlの処理速度を速くするには何を扱えばいいですか?xmlで読み込む情報がたくさんあるので、処理速度が速いxml関数が知りたいです。色々と調べてみましたが、xmlに関しては処理速度が遅いとかxmlの関数によって処理速度が違うとかありました。
また、XMLReaderは使いやすいですか?
XMLReaderに関してよくわからないもので。
※jsonはxmlより処理速度を速いことは知っていますが、xmlの構造はわかりやすいのでxmlを使いたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/11 05:32

実際に計測した結果はどうなっていますか?何秒程度かかっていますか?また、取得した件数は何件ですか?
asahina_dev

2016/08/11 07:27

違うとかありました だから実測してないよ
asahina_dev

2016/08/11 07:34

そろそろあなたのいま現状のサイトを公開してみてはいかがでしょうか?
guest

回答2

0

ベストアンサー

ボトルネックはXML処理部分ではありません.最近のコンピュータのスペックからして,そんなところで人間が感じられるような差が生まれるとは思えません.(小型のコンピュータを使っている場合はこの限りではない)

ではどこかいというと,間違いなくHTTP通信です.推測ですが,こういうコードを書いているんでしょうか.

php

1foreach ($urls as $url) { 2 $xml = simplexml_load_file($url); 3 /* $xml で何かする */ 4}

1回ずつ同期的なHTTPリクエストが飛んでいくので,$urlsの要素数が増えるに従って線形的に実行完了までの時間は増加します.

対策として,HTTPリクエストを並列化して高速に処理させることは可能です.しかし,$urlsが全て同一のAPIサーバのURLということであれば,APIサーバに大きな負荷がかかることになるので,基本的にやってはいけません.ゆっくりゆっくりループを回すしか無いです.

投稿2016/08/11 13:37

mpyw

総合スコア5223

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

XMLを解析するには、DOMパーサ、SAXパーサ、StAXパーサなどの流儀があって、それぞれ使いどころが異なります。巨大なXMLを読むような場面でメモリ消費量を抑えたい場合はDOMパーサは避けるべきでしょう。

それぞれどのような実装になるか、についてはIBMのサイトが詳しいです:
http://www.ibm.com/developerworks/jp/xml/library/x-xmlphp2.html

おかれている状況はよくわからないのですが、DOMパーサであるsimplexmlではなくてStAXパーサであるXMLReaderのほうが速いことが期待できます。なお、SAXパーサであるSimple API for XML はsimplexmlよりも遅いという情報もありました。ただし、もともとのXML構造や、どこにハンドラを置くかなどによっても左右されるでしょうから、実測してみなければ評価はできないとは思います。
http://www.goodpic.com/mt/archives2/2004/07/phpxmlsaxsimple.html

投稿2016/08/10 15:55

matobaa

総合スコア2493

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uverworld101nm

2016/08/11 04:20

ご回答ありがとうございます。実は僕が言うxmlデータとは、apiから取得したデータです。 xml経由で取得しています。
matobaa

2016/08/11 06:58

ごめんなさいコメントの意味が分からない
uverworld101nm

2016/08/11 07:15

僕の置かれた状況を説明したまでです。 突然すみません。
asahina_dev

2016/08/11 07:36

日本語にやくすると ホットペッパーAPIを用いて店舗を検索するページを作成しています。 APIのフォーマットはXMLを利用しています。 てところかな・q・
uverworld101nm

2016/08/11 07:39

いいえ、違います。 apiを使用するのは保留にしようかと考えています。
matobaa

2016/08/11 07:56 編集

apiとかどうでもいいや。xml処理に関して回答が役に立ったなら、質問を解決済みにしてください。「ベストアンサーにする」を押すと解決済みにできます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問