サイトの更新情報をPINGサーバに送信する方法
ブログなどのサイト更新情報をpingサーバに送信する方法です。
ページが更新された時や新規投稿された時にpingサーバにお知らせすることができます。
[参考記事] サイトマップ(sitemap.xml)のつくり方とちょっとしたテクニック
現在、稼働していると思われるping送信先サーバの一覧
サンプルコード
アメブロでのping送信の設定方法
FC2ブログでのping送信の設定方法
pingを送信すると、送信先のサーバはHTMLページを確認してRSSリンクからRSSファイルを取得して更新情報を確認します。
このためpingを送信する場合は、まずRSSフィードを作成してHTMLにリンクを張り付けます。
[参考記事] RSS 2.0の作り方
ブログサービスの創世記にはpingサーバはたくさんありましたが、多くのping送信先はサービスを終了しています。
Yahoo!JAPANの送信先サーバも2014年7月でサービスを終了しているようです。
http://api.my.yahoo.co.jp/RPC2
現在、稼働していると思われるping送信先サーバの一覧
http://blogsearch.google.co.jp/ping/RPC2 http://blogsearch.google.com/ping/RPC2 http://ping.dendou.jp/ 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/
サンプルコード
PINGの送信にはweblogUpdates.pingにサイト名・サイトURLが記載されたXMLファイルを送信先サーバにPOST送信します。
送信先のサービスが終了することを想定に入れたほうがいいです。
<?php // 送信先の設定 $ping_servers = array(); $ping_servers[] = "http://ping.dendou.jp/"; $ping_servers[] = "http://blogsearch.google.co.jp/ping/RPC2"; $ping_servers[] = "http://blogsearch.google.com/ping/RPC2"; $ping_servers[] = "http://ping.bloggers.jp/rpc/"; $ping_servers[] = "http://ping.fc2.com"; $ping_servers[] = "http://ping.freeblogranking.com/xmlrpc/"; $ping_servers[] = "http://pingoo.jp/ping/"; $ping_servers[] = "http://rpc.reader.livedoor.com/ping"; $ping_servers[] = "http://rpc.weblogs.com/RPC2"; $ping_servers[] = "http://www.bloglines.com/ping"; $ping_servers[] = "http://www.blogpeople.net/servlet/weblogUpdates"; $ping_servers[] = "http://rpc.pingomatic.com/"; $ping_servers[] = "http://blog.goo.ne.jp/XMLRPC"; $ping_servers[] = "http://xping.pubsub.com/ping/"; $ping_servers[] = "http://news.atode.cc/rssdaily.php"; $ping_servers[] = "http://blogranking.net/"; $ping_servers[] = "http://www.blogmura.com/"; $ping_servers[] = "http://ping.rss.drecom.jp/"; $ping_servers[] = "http://www.blogoon.net/"; //$ping_servers[] = "http://api.my.yahoo.co.jp/RPC2"; //$ping_servers[] = "http://ping.myblog.jp/"; //$ping_servers[] = "http://ping.blogoon.net/"; //$ping_servers[] = "http://ping.namaan.net/rpc/"; //$ping_servers[] = "http://ping.rootblog.com/rpc.php"; $ping_servers = array_unique($ping_servers); // 自分のサイト名 // (日本語名が使用できない送信先サーバがあります) $site_name = "pentan.info"; // 自分のサイトURL(RSSファイルのリンクがあるページ) $site_url = "http://pentan.info/"; // 送信するweblogUpdates.pingのXMLデータ $post_data = '<?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>weblogUpdates.ping</methodName> <params> <param><value>'.$site_name.'</value></param> <param><value>'.$site_url.'</value></param> </params> </methodCall> '; $headers = array( 'Content-Type: application/xml', 'Content-Length: '.strlen($post_data) ); $context = stream_context_create( array( 'http'=>array( 'method'=>'POST', 'header'=>implode( "\r\n", $headers ), 'content'=>$post_data ) ) ); foreach($ping_servers as $ping_server){ $http_response_header = null; $response = @file_get_contents($ping_server,false,$context); }
多くの場合、レスポンスはXMLです。
flerrorが『0』または『false』の場合は送信がエラーがなく送信が成功しています。
<?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params> <param> <value><struct> <member><name>flerror</name> <value><boolean>0</boolean></value> </member> <member><name>message</name> <value><string>Thanks for the ping.</string></value> </member> </struct></value> </param> </params> </methodResponse>
PHPでXMLデータを扱うにはsimplexml_load_stringが使えます。
simplexml_load_stringは戻り値がオブジェクト形式なので配列で扱いたい時には変換するといいです。
$res_data = simplexml_load_string($res_data);
レスポンスヘッダーはfile_get_contentsのあとに$http_response_headerで受け取れます。
ただし$http_response_headerはサーバに接続ができなかったときやレスポンスがなかった場合には変数の値が変わりません。
このため直前に接続が成功したfile_get_contentsのときの値と勘違いしてしまいがちなので注意が必要です。
これを防ぐためにfile_get_contentsの直前で$http_response_headerの値をnullなどにしたほうがいいです。
[参考記事] file_get_contentsで$http_response_headerを使用するときの注意点
print_r($http_response_header);
アメブロでのping送信の設定方法
ブログ管理画面の左カラムから『PINGの送信先』を選択します。
送信先のURLを記述して『保存』ボタンを押します。
送信先に指定できるのは20個までです。
FC2ブログでのping送信の設定方法
ブログ管理画面の左カラムから『環境設定』を選択します。
『ブログの設定』から『更新情報(Ping)設定』を選択します。
送信先のURLを記述して『更新』ボタンを押します。
関連記事
- PHPでwebサーバー(apache/nginx)の実行ユーザー・グループを確認する方法
- リクエストヘッダーやリクエストボディーなどを取得する方法
- 負荷が高いときには503エラーを返す方法
- PHPでロードアベレージを表示させる方法
- PHPでTwitterのツイートをする/ツイート一覧を取得する/検索する(API v1.1)
- インクルードパスを設定する方法
- オブジェクト(Object)を配列(Array)に変換する方法
- PHPでgzip圧縮形式(gz圧縮)のファイルを読み書きする方法
- PHPでfacebook投稿時に公開範囲を指定する方法
- PHPで複数の画像をfacebookに投稿する方法
- PHPでfacebookのフィード(ウォール)に投稿する方法
- PHPでのfacebookアプリの認証処理(APIを使うユーザー認証)
- MySQL関数のまとめ
- MySQLサーバに接続できるかどうかを確認する
- ディレクトリ内のファイルのパーミッションを一括で変更する
- POSTでアップロードできるファイルサイズの制限を変更する方法
- 暗号化・複合化を行う ブロック暗号
- date型やdatetime型と年月日時分秒への変換
- 関数・メソッドの存在を調べる方法
- PHPでTwitterのbotを作る方法 ツイートをする/ツイート一覧を取得する(API v1)
- strtotimeの指定
- PHPでHTMLメールを送る方法
- ディレクトリセパレータを短く定義する DIRECTORY_SEPARATOR
- モザイク画像を作る方法
- HTML内のアクセス解析タグを除去する方法
- HTMLのTABLEタグを簡単にCSVファイルに変換する方法
- 画像表示のときに指定サイズにリサイズする(画像の拡大縮小)
- テキストを可逆的な暗号化する Crypt_Blowfish
- PHPでwhois検索をする Net_Whois
- よく使うヘッダー関数のまとめ
- キャリア・世代を判別する
- mb_send_mailでCCやBCCを指定する 表示名を指定する
- より高速に、推測困難な一意なIDを生成する方法
- 画像ファイルを指定容量ぎりぎりに圧縮する
- 指定したHTTPヘッダーが送信済みあるいは送信予定に含まれているか
- DOCUMENT ROOTを得る $_SERVER["DOCUMENT_ROOT"]は使えない!
- マルチバイト文字列(日本語文字)を一文字づつ取り出す
- ファイルを削除する/フォルダを削除する
- ファイルを読み込む/ファイルに書き込む
- ディレクトリ内のファイル一覧を取得する
- quoted-printable文字列の変換
スポンサーリンク