Intereting Posts
Что делать с php после jquery .serialize () PHP – синтаксическая ошибка, неожиданный T_CONSTANT_ENCAPSED_STRING Безопасный способ остановить пользователей от формовки форм Запись изображений из API facebook: я думаю, что некоторые Array «Key» или Json Encode являются причиной Вытягивание данных изображения BLOB из MySQL в PHP PHP json_encode возвращает значение null из символа Unicode Кто-нибудь успешно обслуживает высокий трафик с помощью PHP 5.4.4 и APC 3.1.10? как получить подкатегорию третьего уровня в верхнем меню Opencart v2.3 MySQL IFNULL () с несколькими таблицами не работает Как я могу писать на консоль в PHP? Добавление Google Analytics на сайт PHP TCPDF ERROR: некоторые данные уже выведены, не удается отправить файл PDF PDO fetchall () соображения производительности? preg_match: ничего не повторять / нет. Запрос веб-сайта по сценарию на стороне клиента = Скрипт с перекрестным скриптом. Но запрашивать веб-сайт по сценарию на стороне сервера – это не взлом! Зачем?

curl и ping – как проверить, находится ли сайт вверх или вниз?

Я хочу проверить, находится ли сайт вверх или вниз в конкретном экземпляре с использованием PHP. Я узнал, что завиток отобразит содержимое файла, но я не хочу читать содержимое веб-сайта. Я просто хочу проверить статус веб-сайта. Есть ли способ проверить статус сайта? Можем ли мы использовать ping для проверки статуса? Для меня достаточно получить сигналы статуса (404, 403 и т. Д.) С сервера. Небольшой фрагмент кода может мне очень помочь.

что-то вроде этого должно работать

  $url = 'yoururl'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_exec($ch); $retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if (200==$retcode) { // All's well } else { // not so much } 
 function checkStatus($url) { $agent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; pt-pt) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27"; // initializes curl session $ch = curl_init(); // sets the URL to fetch curl_setopt($ch, CURLOPT_URL, $url); // sets the content of the User-Agent header curl_setopt($ch, CURLOPT_USERAGENT, $agent); // make sure you only check the header - taken from the answer above curl_setopt($ch, CURLOPT_NOBODY, true); // follow "Location: " redirects curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // return the transfer as a string curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // disable output verbose information curl_setopt($ch, CURLOPT_VERBOSE, false); // max number of seconds to allow cURL function to execute curl_setopt($ch, CURLOPT_TIMEOUT, 5); // execute curl_exec($ch); // get HTTP response code $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($httpcode >= 200 && $httpcode < 300) return true; else return false; } // how to use //=================== if ($this->checkStatus("http://www.dineshrabara.in")) echo "Website is up"; else echo "Website is down"; exit; 
 curl -Is $url | grep HTTP | cut -d ' ' -f2 

Вы видели функцию get_headers ()? http://it.php.net/manual/en/function.get-headers.php . Кажется, он делает именно то, что вам нужно.

Если вы используете curl напрямую с флагом -I, он вернет HTTP-заголовки (404 и т. Д.) Вместо HTML-страницы. В PHP эквивалентом является curl_setopt($ch, CURLOPT_NOBODY, 1); вариант.

Вот как я это сделал. Я установил агент пользователя, чтобы свести к минимуму вероятность того, что цель запретила мне, а также отключить проверку SSL, поскольку я знаю цель:

 private static function checkSite( $url ) { $useragent = $_SERVER['HTTP_USER_AGENT']; $options = array( CURLOPT_RETURNTRANSFER => true, // return web page CURLOPT_HEADER => false, // do not return headers CURLOPT_FOLLOWLOCATION => true, // follow redirects CURLOPT_USERAGENT => $useragent, // who am i CURLOPT_AUTOREFERER => true, // set referer on redirect CURLOPT_CONNECTTIMEOUT => 2, // timeout on connect (in seconds) CURLOPT_TIMEOUT => 2, // timeout on response (in seconds) CURLOPT_MAXREDIRS => 10, // stop after 10 redirects CURLOPT_SSL_VERIFYPEER => false, // SSL verification not required CURLOPT_SSL_VERIFYHOST => false, // SSL verification not required ); $ch = curl_init( $url ); curl_setopt_array( $ch, $options ); curl_exec( $ch ); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return ($httpcode == 200); } 

ping не будет делать то, что вы ищете – он только скажет вам, работает ли машина (и отвечает на ping ). Это не обязательно означает, что веб-сервер работает.

Возможно, вы захотите попробовать использовать метод http_head – он будет извлекать заголовки, которые веб-сервер отправляет вам обратно. Если сервер отправляет обратно заголовки, то вы знаете, что он работает и работает.

Вы не можете протестировать веб-сервер с помощью ping , потому что это другой сервис. Сервер может работать, но демон webserver может быть разбит в любом случае. Так что локон – ваш друг. Просто игнорируйте контент.