[Blog Hacks:Hack#53PHPでPingサーバを作る]に関する指摘

Blog Hacks私も購入しました。(Webサービス関係者には必須の書籍と思います)

Blog hacks
宮川達彦著・伊藤直也著

出版社 オライリー・ジャパン
発売日 200407下旬
価格  ¥ 3,045(¥ 2,900)
ISBN  4873111749
Webを使った最先端の情報発信技術として注目を集めるBlog。Blogのセットアップや運用、RSS、WebサービスAPIなどを利用したスクリプティングなど、テクノロジ面を中心にBlog関連の技術を掘り下げ紹介。 [bk1の内容紹介]

bk1で詳しく見る オンライン書店bk1


感想は、別エントリに書きますが、その中で早速実装しようと思ったものにPingサーバを作るという項目があります。(国内にそんなにPingサーバいらないんでは?という意見は存じておりますが)

Changes.xmlの公開をそのまま実装しましたが、問題が2点ありましたので修正内容を指摘します。
・weblogUpdates の日付書式がおかしい
・Updateが1件もない場合、スクリプトエラーになる。
2点目は対応する必要がないのかもしれませんが(自分でPingしてから確認すればよい)、スクリプト自身の動作確認時に混乱したくないからです。
まず、http://ping.bloggers.jp/changes.xmlの書式にあわせます。
(*の行を修正します)
 $interval = 60*60*3; // 3 hours
 $now = time();

* $GENERATED_DATETIME = gmdate("D, d M Y H:i:s T", $now);
 $range = date("Y/m/d H:i:s", $now - $interval);


次にXMLで出力する個所(*の行を追加します)
件数が0件の場合、fetchRowでエラーとなります。
0件の場合でもXMLの出力は必要ですので、$countをチェックすることで回避できます。
header("Content-Type: text/xml; charset=UTF-8");
echo <<<HEAD
<?xml version="1.0" encoding="UTF-8" ?>
<weblogUpdates version="1" updated="$GENERATED_DATETIME" count="$count">
HEAD;

* if ($count > 0) {
  $sql = "select * from fm_ping where timestamp > '$range' " .
   "order by timestamp desc;";
  $res = $db->query($sql);
  if ($res) {
   while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
    $title = htmlspecialchars($row['name']);
    $when = $now - strtotime($row['timestamp']);
    echo "<weblog name=\"$title\" url=\"{$row['url']}\" when=\"$when\" />\n";
   }
  }
* }
 echo "</weblogUpdates>\n";
 $db->disconnect();


(追記)BlogHackersレビューなどお寄せくださいdh's memorandaにトラックバックさせていただきました。
Blog関係 : comments (1) : trackbacks (1) ブックマークに追加する

Comments

げひょ
クリックするとトラブルジンクス更新中
by : 酢鶏 ... 2004/08/22 09:52 AM

Comment Form

  

Trackbacks

Trackback url :
参考・ここギコ・NDOWeblog・NDOWeblog・NDOWebl...
by araitatsuya.net ... 2005/03/05 09:46 PM
なかのひと
SiteSearch Google
Google
Web
underdone.net
blog.underdone.net
Blog Pet
Amazon
Categories
Profile
Other
  • Blog Ranking
  • RSS feed meter for http://blog.underdone.net/