Удаленная проверка ссылок простым пхп-скриптом.
Новая тема Написать ответ
# Сб Май 24, 2014 12:05 pmIseeDeadPeople Зарег.: 06.12.2005 ; Сообщ.: 21732Ответить с цитатой
Данный скрипт нужно разместить на хостинге, поставить на крон, на запуск раз в сутки.

Если какой то линк не содержит нужной строчки (проверочная_строка_англ), не доступен, то на указанный 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";




Установка на крон.




Уточните у саппорта хостинга где установлен пхп. Полный путь к файлу виден в файл-менеджере в спанели.


// проверено на ремвиеве.
# Сб Май 24, 2014 12:37 pmDK Зарег.: 18.06.2008 ; Сообщ.: 2425Ответить с цитатой
спасибо! блин довольно таки недавно думал о таком, а тут хопа Smile

а если там 404 или 403 код ответа будет что произойдет?
# Сб Май 24, 2014 12:45 pmKlyNik Зарег.: 22.05.2014 ; Сообщ.: 4Ответить с цитатой
Прошу пардона за невежество, какие ссылки он проверяет? Внешние на сайт?
# Сб Май 24, 2014 2:38 pmIseeDeadPeople Зарег.: 06.12.2005 ; Сообщ.: 21732Ответить с цитатой
Исправление.

На крон ставьте за место "/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
# Сб Май 24, 2014 3:09 pmDK Зарег.: 18.06.2008 ; Сообщ.: 2425Ответить с цитатой
для его нужд вышел Page Weight Lite - бесплатный, удобный, русский
# Сб Май 24, 2014 7:51 pmGostonP Зарег.: 19.07.2013 ; Сообщ.: 487Ответить с цитатой
:thup: Вот это полезность, спс! Drinks or Beer
На недельке попробою, вот только было круче если бы в аську например писало... :smk:
# Сб Май 24, 2014 8:01 pmIseeDeadPeople Зарег.: 06.12.2005 ; Сообщ.: 21732Ответить с цитатой
DK, Если в чем то сомневаешься.. скинь мне в личку сайты которые на проверку хочешь поставить, парочку для примера, я тебе подскажу для примера.. какую подстрочку из сорца лучше взять на каждый, чтобы при всяких ошибках, проверка была как положено.

По поводу крона, реально сделать только так как я сказал выше - с указанием ложного домена и ожиданием в сутки, чтобы точно проверить нужный режим работоспособности от крона.

GostonP писал(а):
.. вот только было круче если бы в аську например писало...



Ну если у них есть простые get\post http порты на это, тогда дай api мануалы, попробую реализовать.

Почитаю что можно сделать, может такое есть и открыты. Так чтобы без всяких гейт-веев, по типу email->sms или через всякие сторонние сервисы, реализовать.
# Сб Май 24, 2014 10:34 pmKlyNik Зарег.: 22.05.2014 ; Сообщ.: 4Ответить с цитатой
DK писал(а):
для его нужд вышел Page Weight Lite - бесплатный, удобный, русский


Спасибо!
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ
 
Любое использование материалов, размещенных на ArmadaBoard.com, без разрешения владельцев ArmadaBoard.com запрещено.