- ベストアンサー
xml rssの更新の有無をphpで取得するには
おはようございます。朝早くから質問させていただきます。 他サイトやブログで公開されているrssフィードなどで、タイトルを取得し、公開するいわゆるアンテナサイトというものがありますが あのようなサイトはどうやって更新されたことを調べているのでしょうか? つまり、phpのsimplexmlではこちら側(後、A)からxmlファイルを取りにいくだけであり、相手側(後、B)が更新したのち、Aサイトのスクリプトを実行して、xmlフィードを取りに行き、Aサイトを更新するということになると思うのですが、ちらほらとみかけるアンテナサイトなどでは、Bブログが更新されるのとほぼ同時に、Aサイト側にもBブログで更新された記事のタイトルが羅列されております。 このようなライブラリやスクリプト、もしくは関数、またはその方法などが存在するのなら教えていただけないでしょうか?よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
全部RSSフィードを取ってくると、大量のXMLを頻繁に見に行く事が 難しいので、HTMLのヘッダ情報からデータが更新されているかを を取ってくるのがよいのではないでしょうか。 以下の関数なら、限りなく短い時間で更新時間が分かります。 <? $time = last_modified("okwave.jp", "/rss.php"); echo date("Y-m-d H:i:s", $time) . "\n"; function last_modified($hostname, $path) { $time = -1; if(!$fp = fsockopen($hostname, 80)) { return -1; } $out = "HEAD http://{$hostname}{$path} HTTP/1.0\n\n"; fwrite($fp,$out); while (!feof($fp)) { if(ereg("Last-Modified: (.+)", fgets($fp, 128), $regs)) { $time = strtotime($regs[1]); fclose($fp); return $time; } } fclose($fp); return $time; } ?>
その他の回答 (1)
- x_jouet_x
- ベストアンサー率68% (162/236)
サイトやブログのRSSフィードを取得すると全てのフィードを取得してしまうことになるので、おそらくXML-RPC等を使用して定期的にPingサーバから更新情報を取得しているのだと思います。 #私自身、Pingサーバから更新情報を受信したことないのであくまで推測ですが・・・。 http://ping.bloggers.jp/api.html 上記URLでAPIを公開しているので一度参照されてはいかがでしょうか? 他のPingサーバでもAPIを公開しているところがあると思います。
お礼
ご回答ありがとうございます。返信が遅くなりまことに申し訳ございません。 pingサーバーのapiについてですが・・・・、どうやら知識と技術不足のため、理解ができずにおわってしまいましたが このようなやり方もあることを教えてくださり、本当にありがとうございました。 失礼いたします。
お礼
ありがとうございます。完璧に実行できました。 このような綺麗なスクリプトを書けるように日々精進していきたいと思います。 それでは、失礼します