Как показала практика Скрипт проверки доступности сайта не оправдал возложенных на него функций – проверка изначально была не правильно задумана.
Так в субботу вечером у меня ни с того, ни с сего завалился 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 комментария на «“Модификация скрипта доступности сайта”»
неплохая реализация.
Скажи это весь код целиком?И где кнопка далее?