PHPで複数pingサーバへ更新通知

※以前別の場所で書いた文章を備忘的に書き記しておきます。

【投稿年月日】2007-10-12 【ジャンル】PHP/MySQL

 とある事情により、GoogleやYahoo!などの複数pingサーバへRSSを自動的に送信する必要に迫られたので、備忘的にメモを残しておきます。
 「XML/RPC.php」というpearが入っていれば、「$blogTitle」と「$blogTopUrl」を書き換えるだけでOKです。代表的と思われるpingサーバをいくつか入れていますが、適宜付け加えたり削除したりしてください。

 ちなみに下記ページに少しだけ手を加えたものです。(ありがとうございました)
pearで更新pingの送信
 
<?php
 require_once('XML/RPC.php');

 $blogTitle = 'My Blog';
 $blogTopUrl = 'http://blog.example.com';

 $ping = array(
  'api.my.yahoo.co.jp' => '/RPC2',
  'blog.goo.ne.jp' => '/XMLRPC',
  'blogsearch.google.co.jp' => '/ping/RPC2',
  'bulkfeeds.net' => '/rpc',
  'rpc.technorati.com' => '/rpc/ping',
  'ping.ask.jp' => '/xmlrpc.m',
  'ping.bloggers.jp' => '/rpc/',
  'www.blogpeople.net' => '/servlet/weblogUpdates'
 );

 $param = array(
  new XML_RPC_Value($blogTitle, 'string'),
  new XML_RPC_Value($blogTopUrl, 'string')
 );
 $msg=new XML_RPC_Message('weblogUpdates.ping', $param);
 foreach($ping as $pingServer => $pingPath) {
  $client = new XML_RPC_Client($pingPath, $pingServer, 80);
  $response = $client->send($msg);
  if(!$response) {
   echo "timeout : ".$pingServer."<br />\n";
  }elseif($response->faultCode()) {
   echo "failed : ".$pingServer."<br />\n";
  }else {
   echo "success!! : ".$pingServer."<br />\n";
  }
 }
 exit;
?>

 今まで必要性をあまり感じなかったので、pingサーバを利用したことがありませんでしたが、実際に使ってみると便利ですね。
 例えばテクノクラティジャパンのブログ検索は、ping送信した直後に反映されました。あまりの早さに驚くと共に、RSSフィードだけでなく全てのHTMLコードがインデックス化されているし、まさに万々歳です。 

 現在、PHPとJavaScriptとXML(JSON)で、日記というか手軽にメモできるサイトの構築を行なっています。各種APIを利用することで、どうやらデータベースを使うことなく、面白いものができそうです。

EDIUNET | PHP/MySQL | 独り言 | 提供サービス | JavaScript