Как показала практика Скрипт проверки доступности сайта не оправдал возложенных на него функций — проверка изначально была не правильно задумана.
Так в субботу вечером у меня ни с того, ни с сего завалился mysql, а точнее системная таблица с правами пользователей. Таким образом сам веб сервер то работал — на GET запрос давал 200 OK — но по факту — лежим … Состояние для выяснения и решения проблемы у меня было не соответствующее (количество выпитого пива и съеденного мяса давало о себе знать), поэтому решил вопрос только в воскресенье — а это значит, что сервер со всеми возложенными на него задачами слёг на 12 часов !
В общем скрипт я модифицировал, на проверку тега Title — если изменился — тогда уже кричим alarm — на заданные адреса отсылаем письма и sms.
Кому интересно — жмём далее и смотрим полный код.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
set_time_limit(0); ignore_user_abort(); ini_set(‘display_errors’,1); ini_set(«error_reporting», E_ALL); $PID = getmypid(); $cachedir = «gtinc»; $mailto = array(«7913…….@sms.mtslife.ru»,«………@gmail.com»); $subject = «allert»; $message = «»; $arr = file(«./$cachedir/domains.txt»); $buf = file_get_contents(«./$cachedir/states.txt»); if (strlen($buf)>5) { $states = unserialize($buf); } foreach ($arr as $ar) { $domain = trim($ar,» \r\n\t»); if (empty($domain)) continue; if (!isset($states[$domain])) $states[$domain]=0; $url = «http://».$domain.«/»; $ch = curl_init($url); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $buf = curl_exec($ch); sleep(30); // $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (stristr($buf,«utf-8»)) { $buf = mb_convert_encoding($buf, «WINDOWS-1251»,«UTF-8»); } if (preg_match(«!<title>(.*?)</title>!ism»,$buf,$match)) { $title = $match[1]; } else { $title = 0; } $md5 = md5($title); tolog(«log», $url.«\t».$md5.«\t».$states[$domain].«\t».$title); if ($states[$domain].«»!=$md5.«») { tolog(«fail», $url.«\t».$states[$domain].«=>».$md5); $message.= $url.«\n».$states[$domain].«=>».$md5.«\n».$title.«\n»; $states[$domain] = $md5; } } file_put_contents(«./$cachedir/states.txt», serialize($states)); if (!empty($message)) { foreach ($mailto as $mail) { file_put_contents(«./$cachedir/mail.txt»,$subject.«\n\n».$message);}} function tolog($filename, $str) { global $PID, $cachedir; $fp = fopen(«./$cachedir/».$filename.«.log»,«a+»); fwrite($fp,$PID.«\t».date(«d.m.Y»).» «.strftime(«\t%H:%M:%S».«\t»)); fwrite($fp,«$str\n»); fclose($fp); } |
2 комментария на «“Модификация скрипта доступности сайта”»
неплохая реализация.
Скажи это весь код целиком?И где кнопка далее?