【PHP】サイトが生きているかダウンしているか確認する方法

WEBサイトがダウンしているか生きているか判別することを目的に、サーバーステータスチェッカーを作りました。

論よりコード

<?php
/**
 * WEBサイトオンラインorオフライン診断
 * @param string $site ホスト
 * @return boolean[] true | string[] 応答時間 | string[] HTTPコード
 * @return boolean[] false | string[] 応答無し | string[] unknown
 */
function itIsOnline($site) {

	// 新規cURLリソースを作成します。
	$curlInit = curl_init($site);

	// オプションを設定します。
	curl_setopt($curlInit, CURLOPT_CONNECTTIMEOUT, 20);
	curl_setopt($curlInit, CURLOPT_TIMEOUT, 20);
	curl_setopt($curlInit, CURLOPT_HEADER, true);
	curl_setopt($curlInit, CURLOPT_NOBODY, true);
	curl_setopt($curlInit, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($curlInit, CURLOPT_FOLLOWLOCATION, true);

	// URLを取得して応答データをブラウザに渡します。
	$response = curl_exec($curlInit);

	// 応答データ詳細情報を取得します。
	$info = curl_getinfo($curlInit);

	// 応答時間を取得します。
	$response_time = substr($info['total_time'], 0, 4);

	// HTTPコードを取得します。
	$http_code = $info['http_code'];

	// cURLリソースを閉じてシステムリソースを解放します。
	curl_close($curlInit);

	if ($response)
		return array(true, $response_time, $http_code);
		return array(false, "応答無し", "unknown");
}

// 以下、使用例。
$url = Trim(htmlspecialchars('https://rajaka.net/'));
$url = strtolower($url);
$url = str_replace(array('http://', 'https://'), '', $url);
$url = Trim("http://$url");

if (!filter_var($url, FILTER_VALIDATE_URL) === false) {

	$url = parse_url(Trim($url));
	$host = $url['host'];
	$myHost = str_replace('www.', '', $host);
	$res = itIsOnline($host);
	$stats =($res[0] == true ? "オンラインです。" : "オフラインです。");
	$response_time = $res[1]."秒";
	$http_code = $res[2];
}

echo $myHost.'は現在'.$stats.'応答時間は'.$response_time.'でHTTPコードは『'.$http_code.'』です。';
?>

ポイント

curl_exec()の返り値によって生きているかダウンしているかを判別します。