Получение кода ответа заголовка

Это часть скрипта 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!"; } } }