解決済

clip!clip!
Ads By Google

RSSの取得、表示をするPHPプログラムについて

いわゆるRSSアンテナサイトというのを作りたいと思っています。


レッツPHP!さんの



を一つのPHPにまとめて

のように表示してみました(オワタあんてなさん風に)。
表示されない方はこちら


予定としては相当数のRSSを取得するつもりなのですが、
8個超えたぐらいから表示がだいぶ重くなり、
12個ぐらいでtok2がエラーを返してくるようになります。
とにかく、重いです。

何かいい解決法はないでしょうか?
ソースはhtml部分以外ほとんどそのまま繋ぎ合わせています。
必要でしたら貼り付けします(200行程度です)。

私のphpの知識はサンプルを動作確認しながら改変していける程度です。
どうかよろしくお願いします。



追記(コメント返信後)
tok2のエラーの原因が構文エラーかもと思い立ち、
ApacheとPHP+PEARを自分のPC(WinXP32bit)にインストールして、実行してみました。

Warning: xml_parse() [function.xml-parse]: input conversion failed due to input error, bytes 0x87 0x55 0x81 0x40 in C:\WWW\Parser.php on line 546

と表示されつつも、一応全て表示されていました。
Parser.phpの546行目付近はこのようになっています。

    function _parseString($data, $eof = false)
   {
       return xml_parse($this->parser, $data, $eof);←546行目
   }

Parser.phpは

ここから入手しました。

全く同じソースでRSSの取得数が少ないとこのエラーは出ませんでした。

2009-10-09 01:08の質問
RSS  PHP  XML  Atom  Feed  rdf  PEAR  
RSS
RSS の情報はこちらです
www.rssnavi.jp/
この質問と回答を読んで役に立った場合は「役に立つ質問」に投票してください。投票が多い質問は、役に立つ質問一覧に掲載され、より多くの人に見てもらうことができます。

回答(1)

1.

2009-10-09 09:13:31ベスト
やっぱり、処理時間でエラーになっているんですね。

サーバー側の負担が大きいようなら、
サーバーでは、
アドレス/req.php?rss=RSSアドレス
みたいなリクエストを受け付けるようにして、
適当な処理結果をJSONで返すか
あるいは、まんまrss.xml を返すようにして、
閲覧側で、Ajax で処理させるようにしてみたらどうでしょうか。

PHPサーバー とAjaxの連携については、
「入門Ajax」高橋 登史朗

入門Ajax
増補改訂版

なんかが参考になると思います。
自信度 : 自信なし 回答レベル : アドバイス
Ads By Google

コメント(5)

#1.  BLUEPIXY
2009-10-09 02:04:34

処理時間でエラーになっているなら、実行許可時間を延ばすとか・・
ホントに処理が重いようなら、
domDocument とか、あるいはまったく自前でパースをやってしまうとか

#2.  BLUEPIXY
2009-10-09 02:23:39

リストのRSSを全部取得してから、
書き出しではなくて、
それぞれのurlを
取得しつつ書き出しにしてみたら・

#4.  レイ
2009-10-09 08:55:45

>>1-2
さっそくのコメントありがとうございます。
最悪表示だけでもされるようにと実行許可時間について検索してみました。
iniファイルのmax_execution_timeで強制終了までの時間を引き延ばすことが出来るようですが、フリースペースなのでサーバのiniファイルに触れません。。。

アドバイスを頂戴しておいて何ですがツリー化→解析など私には高度すぎて組み上げられそうもありません。
ParserはPEARのパッケージを使っています。
>>2に関してもforの中身を一個ずつ書き出す不細工なソースしか思い浮かびません…

無知で申し訳ありません。
ご尽力頂いたのにガッカリさせてしまいますね。。。

#6.  BLUEPIXY
2009-10-09 09:48:45

>0x87 0x55 0x81 0x40
sjis で、
8755 は、ローマ数字II
8140 は、全角スペース
なので、文字コード上変換に失敗したということでしょう。

(そのまま書いたら化けてしまったので、#5は削除しました)

#7.  レイ
2009-10-09 13:05:28

>>6
なるほど!
さっそくエンコードの種類にSJIS-winを追加したら文字化けは解消出来ました。
相変わらずエラーは吐いたままですが…

トラックバック(2)

トラックバックURL: