PHPでPINGを使ってマシンの死活監視をする方法
PHPでサーバーの死活管理
サーバーが生きてるか死んでるかを確認するのにPingを使う方はいると思いますが、
今回PHPからPingを使う方法を知ったので自分用にメモ。
execを使用する方法、fsocketopenを使用する方法の2パターンありますが、
fsockeopneを使用するとポートの指定も出来るので、MySQLやApacheが稼働しているかのチェックにも使えます。
ソースコードは以下
execでサーバーにpingを送信する方法
/* Ping送信プログラム */ function ping($host) { $r = exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)), $res, $rval); //pingの結果を表示 //print_r($r); return $rval === 0; } /* $hostに死活監視をしたいIPやドメインを指定します */ $host = 'www.example.com'; $up = ping($host); echo $up ? '正常稼働中' : '応答なし';
fsockopenでサーバーにpingを送信する方法
こちらの方法ではポート指定が出来るので、80ポート以外を見たい場合に便利です。
/* Ping送信プログラム */ function ping($host,$port=80,$timeout=6) { $fsock = fsockopen($host, $port, $errno, $errstr, $timeout); if ( ! $fsock ) { return FALSE; } else{ return TRUE; } } /* $hostに死活監視をしたいIPやドメインを指定します */ $host = 'www.example.com'; $up = ping($host); echo $up ? '正常稼働中' : '応答なし';
以下のサイトを参考にさせていただきました。感謝!
最新情報をお届けします