Это часть скрипта PHP, который я собираю. В основном домен ($ domain1) определяется в форме и отображается другое сообщение на основе кода ответа с сервера. Однако у меня возникают проблемы с его работой. 3-значный код ответа – это все, что меня интересует.
Вот что я имею до сих пор:
function get_http_response_code($domain1) { $headers = get_headers($domain1); return substr($headers[0], 9, 3); foreach ($get_http_response_code as $gethead) { if ($gethead == 200) { echo "OKAY!"; } else { echo "Nokay!"; } } }
$domain1 = 'http://google.com'; function get_http_response_code($domain1) { $headers = get_headers($domain1); return substr($headers[0], 9, 3); } $get_http_response_code = get_http_response_code($domain1); if ( $get_http_response_code == 200 ) { echo "OKAY!"; } else { echo "Nokay!"; }
Если у вас есть PHP 5.4.0+, вы можете использовать функцию http_response_code () . Пример:
var_dump(http_response_code()); // int(200)
Вот мое решение для людей, которым необходимо отправить электронную почту при выходе сервера:
$url = 'http://www.example.com'; while(true) { $strHeader = get_headers($url)[0]; $statusCode = substr($strHeader, 9, 3 ); if($statusCode != 200 ) { echo 'Server down.'; // Send email } else { echo 'oK'; } sleep(30); }
Вы прямо вернулись, поэтому функция не выполнит дальнейшее условие foreach, которое вы написали. Всегда лучше поддерживать две функции.
function get_http_response_code($domain1) { $headers = get_headers($domain1); return substr($headers[0], 9, 3); //**Here you should not return** foreach ($get_http_response_code as $gethead) { if ($gethead == 200) { echo "OKAY!"; } else { echo "Nokay!"; } } }