スポンサー広告
         
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
 
 

Geek
         複数のサーバで冗長構成を組んでいて、サービスアドレスとして、FQDNを利用している時、
実際に今現在、どのサーバが稼働しているのかを確認するのに、
NSLOOKUPコマンド出会ったり、Pingを利用するのが多くのパターンかとは思うけれども、
複数のサーバを一覧的に確認したい!といった際に、一つ一つのサーバのFQDNに対してコマンドを発行するのはどうしても面倒くさい。

そんな時、PHPからPingを使う方法として、
PHPでPINGを使ってマシンの死活監視をする方法」というページを知ったので、少し手を加えて、
FQDNを確認するようにした。



 
 

概要


  • 外部ファイルの読み込み
  • 現在のFQDNアドレスがどのサーバであるのかを表示
  • そのサーバが稼働しているのかを確認


FQDNの確認には、gethostbynameを利用する。
これと、「PHPでPINGを使ってマシンの死活監視をする方法」で行っている、fsockopenあるいはexecを組み合わせてあげると、サービスサーバが確認できる。

fsockopen あるいは、 exec の利用法


内容は、「PHPでPINGを使ってマシンの死活監視をする方法」をほぼそのまま利用。


//fsockopen の場合
function ping($host,$port=80,$timeout=3)
{
$fsock = fsockopen($host, $port, $errno, $errstr, $timeout);
if ( ! $fsock ) {
return FALSE;
} else{
return TRUE;
}
}

// exec 利用の場合
// Linux 利用の場合
function ping($host)
{
$r = exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)),
$res, $rval);
//pingの結果を表示
//print_r($r);
return $rval === 0;
}

// IIS などWindows OS を利用する場合
// Ping.exeの絶対パスを指定しておく。
function ping($host)
{
$r = exec(sprintf(' "C:Windows¥System32¥ping.exe" -n 1 -w 5 %s',
escapeshellarg($host)),
$res, $rval);
//pingの結果を表示
//print_r($r);
return $rval === 0;
}




外部ファイルの読み込みと、gethostbynameによるサーバ確認



$file = new SplFileObject("");
$file->setFlags(SplFileObject::READ_CSV);

foreach ($file as $line) {
if(is_null($line[0]) ){
  // 最終行の空行対策。
  //CSVの特定行をコメントアウトしたいなら、 if(is_null() or preg_match(<コメントアウトに利用する文字>))
// といった形で対応可能。
}else{
$host = $line[ ]; // 外部読み込みしたCSVに合わせた配列番号
$ip= gethostbyname($host); // gethostbynameで、CSVで読み込んだ配列のipアドレス確認
$up = ping($host);
$upstate = $up ? '正常稼働中' : '応答なし';



課題


phpなので、Windows,Linuxに限らず、稼働するはずだが、
fscokopenを利用した場合、一部のWindows環境で、
php5.dllのアクセス違反が起こり、Internal Server Errorが表示される。


→ 未解決。execを利用したping.exeの呼び出しで代用。






以下のサイトを参考にさせていただきました!

PHPでPINGを使ってマシンの死活監視をする方法 : http://blog.verygoodtown.com/2012/05/php-ping-script-to-check-remote-server-or-website/

PHP Ping Script To Check Remote Server Or Website : http://www.thecave.info/php-ping-script-to-check-remote-server-or-website
スポンサーサイト

関連キーワード(ユーザータグ):
php
html
css

トラックバック用URL ;http://gatolynx.blog100.fc2.com/tb.php/320-b682adf3

コメントの投稿

非公開コメント

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。