GoogleのBloggerで自動でPing送信する方法

  • 投稿 : 2011-02-13
  • 更新 : 2014-03-04
Bloggerなのですが、Ping送信がWeblogs.comにしか行えません。Pingの送信先の追加も出来ません。特に困らないと思うのですが、なんとなく気分的に嫌です。そこで、Bloggerでも他のブログのように更新時に自動でPing送信出来るようにしてみました。

自動で送信するためには、別サーバーが必要ですのでx10Hosting (Free)を借りました。cPanelも日本語化されてますしFTPクライアントからのアップロードも可能です。

自動でPing送信を実現するには、メール駆動方式とCron方式があります。今回はメール駆動方式にしました。Blogger標準機能で記事投稿時にメール送信する機能がありますが、これを利用します。

cron方式は、下記のスクリプトとブログからはてなブックマークへの自動投稿 を組み合わせたスクリプトを作成するとよいでしょう。


まずはPHPのスクリプトです
#!/usr/bin/php -f
<?php
require_once('XML/RPC.php');

$blogtitle = 'ブログタイトル';
$blogtopurl = 'http://XXXXXXX/';  //ブログトップURL
$blogrssurl = 'http://XXXXX';     //ブログRSSのURL
// ここに更新pingサーバを追加していく
$servers = array(
  array(
  'server' => 'http://api.my.yahoo.co.jp',
'path'  => '/RPC2',
),
array(
'server' => 'http://api.my.yahoo.com',
'path'  => '/RPC2',
),
array(
'server' => 'http://blog.goo.ne.jp',
'path'  => '/XMLRPC',
),
);

ping_send($blogtitle, $blogtopurl, $servers);

function ping_send($blogtitle, $blogtopurl, $servers){

$param = array(
new XML_RPC_Value($blogtitle,'string'),
new XML_RPC_Value($blogtopurl,'string')
);

$msg = new XML_RPC_Message('weblogUpdates.ping',$param);

foreach($servers as $k => $v){
$client = new XML_RPC_Client($v['path'],$v['server'],80);
$response = $client->send($msg);

if (!$response){
//echo $v['server'].' timeout'."\n\n";
log_write($v['server'].' timeout');
} else if($response->faultCode()){
//echo $v['server'].' failed'."\n\n";
log_write($v['server'].' failed');
} else {
//echo $v['server'].' success'."\n\n";
log_write($v['server'].' success');
}
}
}

function log_write($data){
$time = time() + 9*3600;  //GMTとの時差9時間を足す
$time2= gmdate("Y/m/d H:i:s ", $time);

$fp = fopen("log.txt", "a");
fwrite($fp,$time2.":".$data."\n");
fclose($fp);
}

?>
'XML/RPC.php'がインクルードできない場合は、XML_RPCをダウンロードしてライブラリーを設置してください。

また、RPC.phpでPEAR.phpがインクルードできないとかの場合は、PEARをダウンロードして設置するかRPC.phpの553行目あたりを以下のように変更することで動作するようになります。
/**
* PEAR Error handling
*
* @return object  PEAR_Error object
*/
function raiseError($msg, $code)
{
return $msg."|".$code;

/*
include_once 'PEAR.php';
if (is_object(@$this)) {
return PEAR::raiseError(get_class($this) . ': ' . $msg, $code);
} else {
return PEAR::raiseError('XML_RPC: ' . $msg, $code);
}
*/

}

次にメール受信駆動で起動するPHPの設定です。
管理画面のメールのフォワーダで可能です。また起動したいPHPスクリプトファイルに実行権限を与えないと実行されません。
最後に、Bloggerの[設定]→[メールとモバイル]→[メール通知]のBlogSend アドレスの設定で上記に指定したメールアドレスを設定してください。

【参考にした記事】
GoogleのBloggerで自動で更新pingを送信する方法
PHPで更新Pingの送信
PHPでPing送信する為のいろいろな方法

追記:2011/07/18
x10Hostingですが無料で便利に使えてるのですが、1ヶ月に1回、「Account Panel」と「forums」にログインしないと使えなくなってしまいます。数日過ぎた程度では、PHPなどの実行ができないようになる程度のようです。メールでお知らせが着ますのでそのタイミングで行っても大丈夫です。

x10Hosting Forums: http://x10hosting.com/forums
Account Panel: https://x10hosting.com/control

追記:2011/08/01
FTPからアクセスできなくなりました。
425 Sorry, FTP connections are not allowed from your country of origin.
Cpanel(WEB)からはファイルのアップロードは可能です。
8/5にはFTPできるようになってました。この無料サーバーいつもこんな感じ。

追記:2013/02/21
1か月1回程度、x10Hostingからメールが来て、サービスをアクティブ化?する必要あるが、無料で使用できています。

スポンサーリンク