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 ? '正常稼働中' : '応答なし';
以下のサイトを参考にさせていただきました。感謝!
最新情報をお届けします
