CakePHP

CakePHPでPingを実装する方法

Pingとは

WordPressなどのブログツールでは、その殆どで実装されている機能に「Ping」があります。

Ping(ピン)はブログにおいて、XML-RPCに基づくプッシュによりサーバに更新と変更内容を伝えるためのメカニズムである。今日では、ほとんどのブログオーサリングツールは、ブロガーが記事を追加したり編集した際に自動的にPing送信を行う。

出典:Wikipedia

この機能をCakePHPで独自機能として実装する場合の手順を紹介します。

利用するライブラリ

Ping機能を実装するにために、IXRライブラリーを使って実装していきます。
このライブラリを利用することで、XML-RPCに基づく形式に手軽に変換することが出来る優れたライブラリーです。

■Incutio PHP XML-RPC library (IXR)
https://github.com/irazasyed/php-ixr

ダウンロード後、「IXR_Library.php」をCakePHPのアプリケーション側「Vendor」ディレクトリに配置します。

「AppController.php」へ記述

「AppController.php」へ処理を記述していきます。
ここでは「ping()」としてメソッド名を設定していますので、各自任意のメソッド名にしてもらえればと思います。

  public function ping($title=NULL,$url=NULL) {
require_once(APP.'Vendor'.DS.'IXR_Library.php');
$sendTo=array(
【ここにはPingサーバ先のURLを記述】
);
if(!empty($title)&&!empty($url)){
foreach($sendTo as $send){
$client = new IXR_Client($send);
$client->query('weblogUpdates.ping',$title,$url);
}exit;
return true;
}
return false;
}

上記のコードを記述後、任意のコントローラー内で呼び出すと指定されたPINGサーバへ更新PINGを送信されます。
引数1の「$title」には引数2に指定するURL先のページタイトルをセットすることで、Ping先のサーバーへPing送信される仕組みです。

Pingサーバ先について

更新Pingを受け付けているサーバーは常に最新のものはなく、急に無くなったり、作られたりと変わっていきます。
そのため、ここで紹介するサーバー先は参考として利用して頂ければと思います。

http://blogsearch.google.co.jp/ping/RPC2
http://blogsearch.google.com/ping/RPC2
http://ping.dendou.jp/
http://ping.freeblogranking.com/xmlrpc/
http://ping.feedburner.com/
http://ping.rss.drecom.jp/
http://rpc.weblogs.com/RPC2
http://rpc.pingomatic.com/
http://rpc.reader.livedoor.com/ping
http://api.my.yahoo.co.jp/RPC2
http://api.my.yahoo.com/RPC2

【2019年2月24日現在】
打ち消しされているURLはエラーが返されますので、リストからは外すべき対象と思われます。