Google Blog SearchがXML_RPCでPingを受け付けているようなので
対応させてみた。
使用したのはPearのXML_RPC2
ソースはこんな感じ
ニッキを更新したときに呼び出されるコード
$values = array('サイト名', 'サイトの URL','変更をチェックするURL','RSS、RDF、Atom フィードの URL ');
$pingGun = new PingGun('http://blogsearch.google.co.jp/ping/RPC2');
$pingGun->Fire($values, true);
$message = $pingGun->Message;
$pingGun->Target = 'http://api.my.yahoo.co.jp/RPC2';
$values = array('サイト名', 'サイトのURL');
$pingGun->Fire($values, false);
$message .= $pingGun->Message;
return $pingGun->Message;
Ping銃クラス
class PingGun{
public $Target = "";
public $Message = "";
/**
* __construct
*
* @param string target TargetUrl
*/
public function __construct($target){
require_once 'XML/RPC2/Client.php';
$this->Target = $target;
}
/**
* Fire
*
* @param array values ParameterArray (BlogName, BlogUrl, [Check Url], [RSS Url])
* @param bool isExtention extendedPing?
* @return bool ValidatePing
*/
public function Fire($values, $isExtention)
{
$options = array(
'prefix' => 'weblogUpdates.'
);
$client = XML_RPC2_Client::create($this->Target, $options);
try{
if($isExtension){
$result = $client->extendedPing($values[0],$values[1],$values[2],$values[3]);
}
else{
$result = $client->ping($values[0],$values[1]);
}
$this->Message = '
'.$this->Target.'にPINGを送りました
'.$result['message'];
return true;
}
catch(XML_RPC2_FaultException $e){
$this->Message = "RPCサーバがエラーを返しました
". $result->getFaultCode() . ' : ' .$e->getMessage();
return false;
}
catch(Exception $e){
$this->Message = "RPCサーバの実行に失敗しました
".$e->getMessage();
return false;
}
}
}
追記 Yahooにも送るように変更してみた