はてなブログで更新Pingを送信したら彼女ができました ~手動Ping実装法~
スポンサーリンク
カノジョさんはできませんでしたが、更新Pingの送信に成功しました!
Pentan.infoさんを参考にさせていただきました。
サイトの更新情報をPINGサーバに送信する方法 - [サンプルコード/PHP] ぺんたん info
以下のコードをphpの使用できるサーバにアップロードし、アクセスします。
下記コードの送り先PingサーバURL、ブログ名、ブログURLを修正します。
送り先Pingサーバは多すぎると使用するサーバがタイムアウトで500エラー吐くので、5サイトくらいにしています。
パーミッションは755あたりでいいんじゃないでしょうか。
<?php // Pingサーバ $ping_servers = array( "http://ping.dendou.jp/", "http://blogsearch.google.co.jp/ping/RPC2", "http://blogsearch.google.com/ping/RPC2", "http://ping.bloggers.jp/rpc/", "http://ping.fc2.com", "http://ping.freeblogranking.com/xmlrpc/", "http://pingoo.jp/ping/" // "http://rpc.reader.livedoor.com/ping", // "http://rpc.weblogs.com/RPC2", // "http://www.bloglines.com/ping", // "http://www.blogpeople.net/servlet/weblogUpdates", // "http://rpc.pingomatic.com/", // "http://blog.goo.ne.jp/XMLRPC", // "http://xping.pubsub.com/ping/", // "http://news.atode.cc/rssdaily.php", // "http://blogranking.net/", // "http://www.blogmura.com/", // "http://ping.rss.drecom.jp/", // "http://www.blogoon.net/" ); // url重複回避 $ping_servers = array_unique($ping_servers); // ブログ名(海外でもOKな英語表記が無難です) $blog_name = "(ブログ名)"; // ブログURL $blog_url = "(ブログURL)"; // 送信ヘッダに含めるXML(weblogUpdates.ping) $content = '<?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>weblogUpdates.ping</methodName> <params> <param><value>'.$blog_name.'</value></param> <param><value>'.$blog_url.'</value></param> </params> </methodCall> '; $headers = array( 'Content-Type: application/xml', 'Content-Length: '.strlen($content) ); $context = stream_context_create( array( 'http'=>array( 'method'=>'POST', 'header'=>implode( "\r\n", $headers ), 'content'=>$content ) ) ); foreach($ping_servers as $ping_server){ $http_response_header = null; $response = file_get_contents($ping_server,false,$context); echo $ping_server,"...",$response,"<br>"; }
結果はこんな感じです。
http://ping.dendou.jp/... flerror 0 message Thanks for the ping. http://blogsearch.google.co.jp/ping/RPC2... flerror0 messageThanks for the ping. http://blogsearch.google.com/ping/RPC2... flerror0 messageThanks for the ping. http://ping.bloggers.jp/rpc/...DB error http://ping.fc2.com... flerror 0 message Thanks for your ping. http://ping.freeblogranking.com/xmlrpc/... flerror 0 message Thanks for the ping. http://pingoo.jp/ping/... flerror 0 message Thanks for the ping.
素のXMLだと1サイトあたり下記のような形式で返ってきます。
<?xml version="1.0"?> <methodResponse> <params><param> <value><struct> <member> <name>flerror</name> <value> <boolean>0</boolean> </value> </member> <member> <name>message</name> <value>Thanks for the ping.</value> </member> </struct></value> </param></params> </methodResponse>
戻り値の"flerror"はPingサーバ側の更新通知の受信処理でエラーが発生したかどうかを意味します。
なのでこの値が0ならば「ちゃんと受け取ったよ!」というサインになります。
もしこれが1だとうまく受け取れてないことになります。
戻り値の"message"はPingサーバからのメッセージなのですが、たいていの場合は"Thanks for the ping."です。
「ありがとよ!だがネットに反映させるかはこちら次第だがな!」みたいな感じでしょうかねw
とりあえず、更新Ping通知はこれでできます。
あとはクローラBOTや訪問者がアクセスすると更新Ping通知されてしまうので、クロール回避設定や認証画面入れ、自分専用にすることで、スパムPing扱いされないように工夫したらいいかもですね。
更新Ping送りまくるのも控えましょう。
気になる方は是非お試しあれ!
- 作者: 松本大洋
- 出版社/メーカー: 小学館
- 発売日: 2012/09/25
- メディア: Kindle版
- 購入: 2人
- この商品を含むブログを見る