メモ的ななにか。

プログラミング関係の備忘録的な何か。

Androidから更新Pingを送信させてみた結果


スポンサーリンク

f:id:miz7maki:20150315042522j:plain

またまた更新Pingネタです。

以前の日記でレンタルサーバに更新Ping通知のPHPファイルを置くならばパスワード認証を設け、他者もしくはクローラBOTにアクセスされないようにした方がいいのではないかと書きました。

それでですね、私は結構面倒くさがり屋でパスワード認証画面とかセッションがどうのこうのとか作るのが億劫なので、プライベート環境から簡単に更新Ping通知できないか考えました。

そんなわけで今回はAndroidからPingを送ってみたらどうなるか試してみました。


Android上にPHPサーバを建てる

そんなことできるの!?って思うかもしれませんが、実はできてしまいます!

今回は"Server for PHP"というアプリを使ってAndroid上にPHPサーバを建ててみます。

Server for PHP
Tautvydas Andrikys
価格:0  平均評価:4.3(253 件)


ソースコード

はてなブログで更新Pingを送信したら彼女ができました ~手動Ping実装法~ - 水菜巻のメモ的ななにか。」で書いたものとほぼ同じです。

送信先サーバだけ少し変えてます。

<?php

// Pingサーバ
$ping_servers = array(
  "http://ping.dendou.jp/",
  "http://blogsearch.google.co.jp/ping/RPC2",
  "http://blogsearch.google.com/ping/RPC2",
  "http://ping.fc2.com",
  "http://ping.freeblogranking.com/xmlrpc/",
  "http://ping.blogmura.com/xmlrpc/*********’",
  "http://rpc.reader.livedoor.com/ping",
  "http://blog.goo.ne.jp/XMLRPC",
  "http://rpc.weblogs.com/RPC2"
);
// url重複回避
$ping_servers = array_unique($ping_servers);

// ブログ名(共通言語の英語表記が無難です)
$blog_name = "mizna.hatenablog.com";
// ブログURL
$blog_url = "http://mizna.hatenablog.com";

// weblogUpdates.pingのXMLデータ
$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>";
}

 
 
 

公開ディレクトリにPHPファイルを設置する

f:id:miz7maki:20150315034310j:plain

まずは"Server for PHP"アプリを起動させます。

上のスクリーンショットのように標準の公開ディレクトリは内部メモリの"www"ディレクトリです。

PCで作ったファイルはDropboxやOneDriveなどを駆使してAndroid端末に移動できると便利です。
もちろんUSBケーブル経由、SDカード経由でもOKです。

あとはファイルマネージャなどで内部メモリの"www"ディレクトリにPHPファイルを設置するだけです!

既に"www"ディレクトリ内に更新PingPHPファイルを"index.php"というファイル名にして上書きすると、Webページにアクセスするだけで結果が得られるので楽かもしれません!


PHPサーバにアクセス

f:id:miz7maki:20150315034834j:plain

"Server for PHP"アプリ画面の下のほうに「Start server」ボタンがあるので押します。

サーバが起動すると上のスクリーンショットのようにサーバのリンクが出現するので、これをタップします。

あとは表示するWebブラウザアプリを選択し、レスポンスを待つだけです!


 

結果

レンタルサーバPHPファイル置いてアクセスしたときと比較してみると・・・

にほんブログ村の専用通知URLは隠しています

Android

f:id:miz7maki:20150315031159j:plain

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.fc2.com... flerror 0 message Thanks for your ping. 
http://ping.freeblogranking.com/xmlrpc/... flerror 0 message Thanks for the ping. 
http://ping.blogmura.com/xmlrpc/***********...messageThanks for the pingflerror0
http://rpc.reader.livedoor.com/ping...flerror_value0_signature_typeboolean_attrmessageThanks for the ping
http://blog.goo.ne.jp/XMLRPC... flerror 1 message Thanks for the ping. 
http://rpc.weblogs.com/RPC2...messageThanks for the ping.legalYou agree that use of the Weblogs.com ping service is governed by the Terms of Use found at www.weblogs.com.flerror0

レンタルサーバ

f:id:miz7maki:20150315031210j:plain

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.fc2.com... flerror 0 message Thanks for your ping. 
http://ping.freeblogranking.com/xmlrpc/... flerror 0 message Thanks for the ping. 
http://ping.blogmura.com/xmlrpc/***********...messageThanks for the pingflerror0
http://rpc.reader.livedoor.com/ping...flerror_value0_signature_typeboolean_attrmessageThanks for the ping
http://blog.goo.ne.jp/XMLRPC... flerror 1 message Thanks for the ping. 
http://rpc.weblogs.com/RPC2...messageThanks for the ping.legalYou agree that use of the Weblogs.com ping service is governed by the Terms of Use found at www.weblogs.com.flerror0

WinMergeを使って両方の結果に違いがあるか確認してみる

f:id:miz7maki:20150315031618j:plain

まったく同じ結果になりました。

考察的な何か

今回の結果ではレンタルサーバAndroid上のサーバでレスポンス内容の違いはありませんでした。

現状ではそうかもしれないが、例えばPingサーバ(受け手)側でスパム通知や連続通知防止のためにドメインでブロックされることも考えられるので、更新Ping通知するときには過度に送り過ぎないようにしたほうがいいかもしれません。

あとは"Server for PHP"ではPingサーバのレスポンスが逐次返ってきたので驚きました。

通常のWebサーバだと全部の処理が終わってからページ表示されるのに対して、"Server for PHP"はajaxのようにシームレスに処理されているように見えました。
中でどんな処理しているんだろう・・・とにかくすげぇ!