Что-то произошло! Отчет о состоянии серверов

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

A simple script PHP to theck and display web server status

License

truongan/php.server.status

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Читайте также:  Html relative text size

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

A simple PHP script to check and display various web server statuses:

System status viewing

No installation and no database is required.

The first section of the script display connection status of some service running on your system. Simply open the php file and make necessary modificaiton in this region:

 $services[] = array("port" => "80", "service" => "Apache", "ip" => "") ; $services[] = array("port" => "21", "service" => "FTP", "ip" => "") ; $services[] = array("port" => "3306", "service" => "MYSQL", "ip" => "") ; $services[] = array("port" => "22", "service" => "Open SSH", "ip" => "") ; $services[] = array("port" => "9091", "service" => "Transmission", "ip" => "") ; 

You can comment out service that you don’t have or add new service use the similar syntax.

The second section of the script display system load status, uptime, resource usage information and top Resource usage process. You can add or remove the mountpoint you want to check for freep space, look for those lines of code:

/* * The disks array list all mountpoint you wan to check freespace * Display name and path to the moutpoint have to be provide, you can */ $disks[] = array("name" => "local" , "path" => getcwd()) ; // $disks[] = array("name" => "Your disk name" , "path" => '/mount/point/to/that/disk') ; 

The last section of the script display network traffic statistic. Those information is gather by vnstat (http://humdi.net/vnstat/), you will need vnstat installed and properly configured before hand.

You can view various information gather and display by vnstat. The option you pass to vnstat will by specified HTTP GET parameter in your request URL. To view

information, you will request the URL

Источник

Php скрипт проверки сервера

БлогNot. Проверка доступности сервера на PHP

Проверка доступности сервера на PHP

Проверить доступность одного Web-сервера легко с помощью стандартной функции fsockopen :

0) $status = 'alive, responding'; fclose ($fp); > echo "$server status is $status"; ?>

Однако для проверки состояния нескольких серверов такой подход едва ли годится — вызов функции fsockopen может длиться столько секунд, сколько указано в её последнем параметре, и только затем будет выполнена следующая команда сценария. Используя PHP 5 и потоковые сокеты задачу можно выполнить и асинхронно, правда, код станет сложнее:

 $host) < $s = @stream_socket_client ("$host:80", $errno, $errstr, $timeout, STREAM_CLIENT_ASYNC_CONNECT|STREAM_CLIENT_CONNECT); if ($s) < $sockets[$id] = $s; $status[$id] = "in progress"; >else < $status[$id] = "failed, $errno $errstr"; >> //Ждём ответов while (count($sockets)) < $read = $write = $sockets; $n = stream_select ($read, $write, $e = null, $timeout); if ($n >0) < foreach ($read as $r) < $id = array_search($r, $sockets); $data = fread($r, 8192); if (strlen($data) == 0) < if ($status[$id] == "in progress") < $status[$id] = "failed to connect"; >fclose($r); unset ($sockets[$id]); > else < $status[$id] .= $data; >> foreach ($write as $w) < $id = array_search($w, $sockets); @fwrite ($w, "HEAD / HTTP/1.0\r\nHost: " . $hosts[$id] . "\r\n\r\n"); $status[$id] = "waiting for response"; >> else < foreach ($sockets as $id =>$s) < $status[$id] = "timed out " . $status[$id]; >break; > > //Вывод результатов foreach ($hosts as $id => $host) < echo "Host: $host Status: " . $status[$id] . "
\n"; > ?>

На локалхосте Windows, несмотря на подавление вывода сообщений об ошибках от функции stream_select , Вы рискуете получить лишь

Warning: Invalid CRT parameters detected in C:\Inetpub\wwwroot\socks.php on line 22

Причина думаю, в таком же баге, на *nix-сервере пример сработал.

11.05.2012, 16:55 [13887 просмотров]

Источник

Проверка доступности сайта на PHP/JavaScript

Проверка доступности сайта на PHP/JavaScript

Проверка ответа сервера при помощи библиотеки cURL (Libcurl)

Подключаемая библиотека cURL (в PHP она называется Libcurl) для работы с сетевыми протоколами HTTP. С ее помощью можно узнать ответ сервера и определить доступность запрашиваемого сайта. cURL работает практически на всех хостинг-площадках.

Проверка HTTP статуса ответа от сервера

Примеры строк User Agent

  • Mozilla Firefox 36 (Win 8.1 x64): Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
  • Google Chrome 53 (Win 10 x64): Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36
  • Google Chrome 40 (Win 8.1 x64): Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36
  • Opera 40 (Win 10 x64): Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.101 Safari/537.36 OPR/40.0.2308.62
  • Opera 12.17 (Win 8 x64): Opera/9.80 (Windows NT 6.2; WOW64) Presto/2.12.388 Version/12.17
  • Apple Safari 5.1 (Win 8 x64): Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
  • Internet Explorer 11 (Win 10 x64): Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko
  • Internet Explorer 11 (Win 8.1 x64): Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; ASU2JS; rv:11.0) like Gecko
  • Microsoft Edge (Win 10 x64): Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586
  • iPhone: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25
  • Android 2.3.5 (Philips W632): Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; Philips W632 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
  • iPad: Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25
  • Яндекс: Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)
  • Google: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
  • Bing: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
  • Yahoo! Slurp: Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
  • Mail.ru: Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/Fast/2.0; +http://go.mail.ru/help/robots)
  • Sputnik: Mozilla/5.0 (compatible; SputnikBot/2.3; +http://corp.sputnik.ru/webmaster)
  • Ahrefs: Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)
  • Majestic: Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)
  • SMTBot: Mozilla/5.0 (compatible; SMTBot/1.0; +http://www.similartech.com/smtbot)
  • linkdex: Mozilla/5.0 (compatible; linkdexbot/2.2; +http://www.linkdex.com/bots/)
  • Exabot: Mozilla/5.0 (compatible; Exabot/3.0; +http://www.exabot.com/go/robot)
  • StatOnline.ru: Mozilla/5.0 (compatible; StatOnlineRuBot/1.0)

Проверка доступности Интернета на JavaScript

Пингуем сайт с умным использованием нативного Image объекта

Это работает на всех типах серверов: веб-серверы, FTP-серверы и игровые серверы

Источник

H Мониторинг доступности сервера или сайта с применением PHP в черновиках

Применения PHP для целей системного администрирования редкая вещь, но для решения простых задач — это вполне допустимо. На Хабре данная тематика освещена слабо. Но возможно представить ситуацию, когда у человека есть знания PHP и его основная работа не дает времени изучить что-то другое, например, Python или Perl. Вот для такой категории людей может пригодится эта статья.

Предлагаемый скрипт дает возможность пинговать серверы и получать код состояния HTTP. Соответственно можно оперативно узнать время выхода сайта из строя или отсутствие доступности какого-то сервера для ping. Оповещение приходит на email и СМС. Решение с почтой вряд ли вызовет вопросы, чего не скажешь об отправке СМС. Реализация отправки сообщений на телефон организована с помощью услуг сайта sms.ru. Данный сервис предоставляет до 60 бесплатных СМС программистам для своих разработок. Вам потребуется зарегистрироваться на сайте и в разделе «Программистам» взять готовый PHP-пример для отправки сообщений на свой телефон. Он будет выглядеть примерно так:

$body=file_get_contents("http://sms.ru/sms/send?api_id=505dfad707-a5df30-aa04jkhkjhk-02f507654e7c&to=380950000000&text=".urlencode(iconv("windows-1251","utf-8","Привет!"))); 

Практически без изменений пример попадет в скрипт. В вашем варианте будет другой ID и номер телефона соответственно.

Скрипт мониторинга рассчитан для работы на Linux системе. Обратите внимание, чтобы выполнить скрипт в терминале указывая просто название, его потребуется сделать исполняемым командой chmod +x и в начало текста программы добавить #!/usr/bin/env php, что уже сделано в нашем случае. Иначе, имя скрипта в терминале придется предварять словом php. Также, удобно запускать скрипт с помощью cron каждые 30 минут. Для обкатки рекомендую запустить вначале в терминале, если будут ошибки они отобразятся на экране.

Для правильной работы на компьютере должны быть установлены и настроены: PHP, PHP-CLI, sendmail.

Вот собственно и текст скрипта:

#!/usr/bin/env php > /* Проверяем существование файла, если нет, выводим справку, его размер * (если пустой, выводим справку), если аргументов больше одного, выводим справку, * если указан аргумент -h, выводим справку. */ if ((!$hostToPing) || (filesize(__DIR__."/hosts_to_ping") == "0") || ($argc > 1) || ($help == "-h")) < echo /* Читаем первую строку, там должен быть e-mail, если не проходит проверку на @ * выводим ошибку в терминал. */ $tomail = fgets($hostToPing); $tomail = trim($tomail); if (strpos("$tomail", "@") === false) < die("Указан неправильный e-mail!. Смотрите справку указав аргумент -h.\n"); >$text_error_ping = "Нет ответа на ping."; $text_error_http = "Ответ сервера:"; // Читаем со второй строки. while (!feof($hostToPing)) < $stroka = fgets($hostToPing); /* Ищем пустые строки. Убираем все пробельные символы и смотрим длину строки, * если 0, то она пустая, пропускаем итерацию цикла. */ $test = preg_replace('/\s/', "", $stroka); if (strlen($test) == "0") < continue; >// Убираем пробелы вначале и в конце строки. $stroka = trim($stroka); // Меняем все табы и где больше одного пробела на один пробел. $stroka = preg_replace('/\s+/', " ", $stroka); // Делим строку по пробелу. $opcii = explode(" ", $stroka); // Выбираем тип проверки, проверяем, если ошибка отсылаем на мыло и телефон. if ($opcii[1] == "http") < $URL = "http://".$opcii[0]; if (!get_headers($URL))< sendMailError($URL, "Нет ответа на http запрос. Возможно сервер не пингуется!", $tomail); sendSMS($URL.": Ошибка http! Возможно сервер не пингуется!"); >else < $otvet = get_headers($URL); if (substr($otvet[0], 9, 3) != "200") < $text_error_http = $text_error_http." ".substr($otvet[0], 9, 3); sendMailError($URL, $text_error_http, $tomail); sendSMS($URL." ".$text_error_http); >> > elseif ($opcii[1] == "ping") < $command = 'ping -c 10'." ".$opcii[0]." 2>/dev/null 1>&2"; system($command, $return_var); if ($return_var != "0") < sendMailError($opcii[0], $text_error_ping, $tomail); sendSMS($opcii[0].": ".$text_error_ping); >> // Отсылаем ошибку на мыло и телефон, если указан неправильный аргумент elseif ($opcii[1] != "ping" && $opcii[1] != "http") < sendMailError($opcii[0], "Указаны неправильные настройки в конфигурационном файле! Смотрите справку указав аргумент -h.", $tomail); sendSMS($opcii[0].": неправильная настройка в конфиге!"); >> fclose($hostToPing); // Функция отправки сообщения на mail. function sendMailError($nameServer, $text, $toaddress) < $date_m = date('l jS \of F Y h:i:s A'); $mailcontent = "     

Что-то произошло! Отчет о состоянии серверов

Сервер: $nameServer

Сообщение:

$text

$date_m

"; $subject = "Что-то произошло! Отчет о состоянии серверов."; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; $headers .= "From: admin@helper". "\r\n"; mail($toaddress, $subject, $mailcontent, $headers); > function sendSMS($textSMS) < $body=file_get_contents("http://sms.ru/sms/send?api_id=505adfdd707-adf0-aa04-99b9dkfkj7654e7c&to=380950000000&text=" .urlencode("$textSMS")); >?>

Конечно, кто-то спросит: «Зачем это все?». Я назову несколько аргументов: бесплатно, просто и полезно. Ведь есть интернет-сервисы с аналогичным базовым функционалом и при этом, услуги предоставляются за деньги. На этом все.

Источник

Оцените статью