|
|
|
Данный скрипт нужно разместить на хостинге, поставить на крон, на запуск раз в сутки.
Если какой то линк не содержит нужной строчки (проверочная_строка_англ), не доступен, то на указанный e-mail ($email) придет сообщение о не работоспособности данной ссылки.
checklinkscron.php
Код: |
<?
error_reporting(0);
function simplegetpage ($url) {
$ch = curl_init($url);
if (!$ch) { return "ERROR: ".curl_error($ch); }
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)");
$r = curl_exec($ch);
curl_close($ch);
return "$r";
}
function simplegetpage_mob ($url) {
$ch = curl_init($url);
if (!$ch) { return "ERROR: ".curl_error($ch); }
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A498b Safari/419.3");
$r = curl_exec($ch);
curl_close($ch);
return "$r";
}
$check = array(
"http://domain1.com/,проверочная_строка_англ",
"http://domain2.com/,проверочная_строка_англ",
"http://domain3.com/,проверочная_строка_англ",
"http://domain4.com/,проверочная_строка_англ");
$email = "........@mail.com";
foreach ($check as $chklnk) {
list ($lnk,$find) = explode(",", $chklnk);
$C1 = simplegetpage($lnk);
$C2 = simplegetpage_mob($lnk);
if (ereg($find, $C1)) { $all="ok"; } else { mail($email, "checklinkscron error report", $chklnk."\n\n".date("H:i d.m.Y")); }
if (ereg($find, $C2)) { $all="ok"; } else { mail($email, "checklinkscron (mobile) error report", $chklnk."\n\n".date("H:i d.m.Y")); }
}
?>
|
Настройки.
Код: |
$check = array(
"http://domain1.com/,проверочная_строка_англ",
"http://domain2.com/,проверочная_строка_англ",
"http://domain3.com/,проверочная_строка_англ",
"http://domain4.com/,проверочная_строка_англ");
$email = ".....@mail.com";
|
Установка на крон.
Уточните у саппорта хостинга где установлен пхп. Полный путь к файлу виден в файл-менеджере в спанели.
// проверено на ремвиеве. |
|
|
|
|
|
спасибо! блин довольно таки недавно думал о таком, а тут хопа
а если там 404 или 403 код ответа будет что произойдет? |
|
|
|
|
|
Прошу пардона за невежество, какие ссылки он проверяет? Внешние на сайт? |
|
|
|
|
|
Исправление.
На крон ставьте за место "/usr/local/php/bin" -> "/usr/local/bin/php".
Для проверки..
Поставьте в линки_на_проверку ($check) спецом не существующим доменом в конец массива, чтобы убедиться что идет запуск.
т.е.
$check = array(
"http://myrealdomain.com/,html",
..
..
"http://not-found-domainzzz11221.com/,blaaaaaaaa");
Спустя сутки, проверьте ящик, если сообщения есть - уберите последний, значит все работает ОК.
Если сообщений нет, узнайте у хостера точный путь к пхп, он может быть и /usr/php/bin
DK писал(а): |
а если там 404 или 403 код ответа будет что произойдет?
|
В зависимости от строки проверки, - ставь её например коды аналитика, верифира, т.е. ту строку, которой точно нет на странице ошибок, тогда также отпишет на и-мэил что с линком что то не то.
Вот в общем как у меня это сделано.
$check = array(
"http://moidomen1.com/,10555тут-код-гугль-верифера-которого-точно-нет-там-где-ошибка51010",
.....
KlyNik писал(а): |
Прошу пардона за невежество, какие ссылки он проверяет? Внешние на сайт?
|
Проверяет те, которые ему укажите в массиве $check, на выдачу нужного контента, т.е. наличия в контенте нужной проверочной строки. Этого достаточно чтобы убедиться что сайт работает как положено.
Для ваших нужд, я так полагаю, скорее нужен локальный http://home.snafu.de/tilman/xenulink.html |
|
|
|
|
|
|
Вот это полезность, спс!
На недельке попробою, вот только было круче если бы в аську например писало... |
|
|
|
|
|
DK, Если в чем то сомневаешься.. скинь мне в личку сайты которые на проверку хочешь поставить, парочку для примера, я тебе подскажу для примера.. какую подстрочку из сорца лучше взять на каждый, чтобы при всяких ошибках, проверка была как положено.
По поводу крона, реально сделать только так как я сказал выше - с указанием ложного домена и ожиданием в сутки, чтобы точно проверить нужный режим работоспособности от крона.
GostonP писал(а): |
.. вот только было круче если бы в аську например писало...
|
Ну если у них есть простые get\post http порты на это, тогда дай api мануалы, попробую реализовать.
Почитаю что можно сделать, может такое есть и открыты. Так чтобы без всяких гейт-веев, по типу email->sms или через всякие сторонние сервисы, реализовать. |
|
|
|
|
|
|
|
|