2012/04/22更新

[Tool] ブログの更新をお伝えするPing送信とは?使い方やPHPでの実装方法をかきました。

このエントリーをはてなブックマークに追加      

最近、YoheiM.NETのブログ更新時に、各有名サービスにブログを更新した事を伝える仕組みを導入しました。
Pingと呼ばれるサービスで、こんなブログを更新したよーとお伝えすることで、 RSSのチェックなどに来てくれるようです。
Ping送信は外部サービス活用も可能でしたが、どうせならと思い、PHPで作成しました。 そのソースコードも記載したいと思います(・∀・)

Send Ping to Google, Yahoo ,and FC2



Ping送信の仕組み

GoogleやYahooやFC2などの有名サービスに、XMLを送付する事で、 ブログを更新した事を伝えます。URLを見る限りRPC(リモートプロシージャーコード) という仕組みで、ブログ更新した事を感知する処理をHTTP経由で呼び出すことで、できるようです。




PHPでのPing送信の実装

PHPでPing送信する為には、以下の2ステップを実施します。

1、送信するXMLを作成する。
2、HTTPヘッダなどを作って、送信する。

上記の実装例が以下となります。
// 引数で指定されたところ($host, $path)に、
// 引数($title, $url)の内容をPing送信する。
function updatePing($host, $path, $title, $url) {

  // 送付するXMLを作成する
  $content =
    "<?xml version=\"1.0\"?>\r\n"
    . "<methodCall>\r\n"
    . "<methodName>weblogUpdates.ping</methodName>\r\n"
    . "<params>\r\n"
    . "<param>\r\n"
    . "<value>" . htmlspecialchars($title) . "</value>\r\n"
    . "</param>\r\n"
    . "<param>\r\n"
    . "<value>$url</value>\r\n"
    . "</param>\r\n"
    . "</params>\r\n"
    . "</methodCall>\r\n";

  // HTTPで送付する内容を作成する
  $req =
    "POST $path HTTP/1.0\r\n"
    . "Host: $host\r\n"
    . "Content-Type: text/xml\r\n"
    . "Content-Length: ". strlen($content) . "\r\n"
    . "\r\n"
    . $content;

  // 送付する
  $sock = @fsockopen($host, 80, $errno, $errstr, 2.0);
  $result = "";
  if ($sock) {
    fputs($sock, $req);
    while(!feof($sock)) {$result .= fread($sock, 1024);}
  }

  // Ping送信先からの戻り内容を返す
  return $result;
}


// Ping送信を、送付したいところに送付する。
function sendPings () {
       
  $title = "YoheiM .NET  - 世の中のWeb情報に、体験と意見を添えて発信します";
  $url = "http://www.yoheim.net/";       
       
  echo updatePing("blogsearch.google.com", "/ping/RPC2", $title, $url) . "\r\n";
  echo updatePing("rpc.technorati.com", "/rpc/ping", $title, $url) . "\r\n";
  echo updatePing("api.my.yahoo.com", "/RPC2", $title, $url) . "\r\n";
  echo updatePing("api.my.yahoo.co.jp", "/RPC2", $title, $url) . "\r\n";
  echo updatePing("rpc.weblogs.com", "/RPC2", $title, $url) . "\r\n";
  echo updatePing("ping.ask.jp", "/xmlrpc.m", $title, $url) . "\r\n";
  echo updatePing("blog.goo.ne.jp", "/XMLRPC", $title, $url) . "\r\n";
  echo updatePing("ping.fc2.com", "/", $title, $url) . "\r\n";
}


送付先は、色々あるようですが、YoheiM.NETでは上記8サイトにPing送信を行っています。




最後に

Ping送信を行うとブログのアクセス数上がったという人も、変わらないという人もいるのが現状のようです。
YoheiM.NETでは、少しでも可能性のあるものは試してみたいと思い、Ping送信を取り入れました。
またエンジニアとしては、せっかくなら自作したいと思い、PHPで作ってみました。
この記事やコードが少しでも他の方の参考になれば幸いです(((o(*゚▽゚*)o)))
最後までお読み頂きましてありがとうございました!






こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。