Есть таблица в MySQL
в ней три поля ID, URL, STATUS
URL типа: http://web.errpo.it:7080/erty/navy?KEY=START , т.е сервак сам может и стоит (ping пингуется), а вот по указанному порту сервис не доступен.Надо слобать скрипт для crona, который бы брал URL, проверял на доступность и апдейтил STATUS.
Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>Надо слобать скрипт для crona, который бы брал URL, проверял на доступность
>и апдейтил STATUS.с помощью команды mysql достаем/апдейтим нужные данные.
с помощью, например, wget пытаемся скачать страницу>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
Так от нас то что требуется?
>>Надо слобать скрипт для crona, который бы брал URL, проверял на доступность
>>и апдейтил STATUS.
>
>с помощью команды mysql достаем/апдейтим нужные данные.
>с помощью, например, wget пытаемся скачать страницу
>
>>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>
>Так от нас то что требуется?Как вызвать wget из Perl ?
>[оверквотинг удален]
>>>и апдейтил STATUS.
>>
>>с помощью команды mysql достаем/апдейтим нужные данные.
>>с помощью, например, wget пытаемся скачать страницу
>>
>>>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>>
>>Так от нас то что требуется?
>
>Как вызвать wget из Perl ?и почему не работает вот это?
$Tmpnam="/var/tmp/wget_epr_file";
open(FN,">$Tmpnam");
binmode (FN);
read FN $Wget_epr; #если написать print - работает на вывод.
close(FN);
>>[оверквотинг удален]
>>>>и апдейтил STATUS.
>>>
>>>с помощью команды mysql достаем/апдейтим нужные данные.
>>>с помощью, например, wget пытаемся скачать страницу
>>>
>>>>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>>Как вызвать wget из Perl ?:)
>
>и почему не работает вот это?
>
> $Tmpnam="/var/tmp/wget_epr_file";
> open(FN,">$Tmpnam");
> binmode (FN);
> read FN $Wget_epr; #если написать print - работает на вывод.
>
> close(FN);а что ты хочешь считать из пустого файла?
>[оверквотинг удален]
>>и почему не работает вот это?
>>
>> $Tmpnam="/var/tmp/wget_epr_file";
>> open(FN,">$Tmpnam");
>> binmode (FN);
>> read FN $Wget_epr; #если написать print - работает на вывод.
>>
>> close(FN);
>
>а что ты хочешь считать из пустого файла?он будет не пустой
туда до этого WGET сгрузит страничку:$Epr_file_name = "/var/tmp/wget_epr_file";
$Wget_epr = "";
system("/usr/local/bin/wget --quiet --tries=1 --connect-timeout=3 --output-file=$Epr_file_name \"$Url\"");
open FN, "$Epr_file_name" || die "Файл не найден!";
foreach( <FN> )
{ $Wget_epr .= $_; }
close FN;
if ($Wget_epr ne "")
{...}
else
{...}только проблема
WGET вызываемый из PERL сообщения об ошибках ("нет коннекта например") выводит всё в тот файл и не получается определить, жив сайт или нет. если WGET вызывать с опцией --quiet он вообще ничего в файл не выводит, ни ошибок, ни страницу сайта даже если он жив.
При вызовы из просто командной строки - всё работает замечательно как надо. ошибки - на экран, загрузка - в файл. если включаю --QUIET ошибки выключаются, загрузка тем не менее в файл.Код:
кароче жопа
оказалось этот вредный WGET не желает воспринимать некоторые длинные ключи (причём только из ПЕРЛа!)
пришлось переписать на короткиеsystem("/usr/local/bin/wget -q --tries=1 --connect-timeout=3 -O $Eper_file_name \"$Url\"");
Да, злой ПЕРЛ во всем виноват, даже в том что вы не знаете про LWP(а также LWP::Parallel) и используете wget, причем вызываете его отдельно для каждого сайта. А еще ПЕРЛ будет виноват в том, что в результате скорость проверки будет просто черепашьей особенно при значительном увеличении количества проверяемых сайтов. На неумение проверять файл на пустоту без его открытия и считывать из файла всего содержимого за раз можно даже не обращать внимание, так мелочи, всего лишь нежелание читать документацию.
>Да, злой ПЕРЛ во всем виноват, даже в том что вы не
>знаете про LWP(а также LWP::Parallel) и используете wget, причем вызываете его
>отдельно для каждого сайта. А еще ПЕРЛ будет виноват в том,
>что в результате скорость проверки будет просто черепашьей особенно при значительном
>увеличении количества проверяемых сайтов. На неумение проверять файл на пустоту без
>его открытия и считывать из файла всего содержимого за раз можно
>даже не обращать внимание, так мелочи, всего лишь нежелание читать документацию.
>гыгыгы )) поддерживаю.
для начала сходить на perl.com ...Разместить на каждом сайте маленький текстовый файл - посчитать его md5.
По списку при помощи LWP дергать его с сайта и сверять сумму.
С мускулом все элементарно и стандартно. Тупой апдейт базы. ВСЕ!
>[оверквотинг удален]
>>даже не обращать внимание, так мелочи, всего лишь нежелание читать документацию.
>>
>
>гыгыгы )) поддерживаю.
>для начала сходить на perl.com ...
>
>Разместить на каждом сайте маленький текстовый файл - посчитать его md5.
>По списку при помощи LWP дергать его с сайта и сверять сумму.
>
>С мускулом все элементарно и стандартно. Тупой апдейт базы. ВСЕ!УМНИКИ!
САЙТЫ НЕ МОИ!
НИЧЕГО Я ТУДА ПОЛОЖИТЬ НЕ МОГУ!СПАСИБО!
Это как то отменяет ваше неумение работать с perl и как следствие ругань на него? Вызов внешних программ в перловом скрипте лучше минимизировать, иначе зачем перл вообще нужен, проще/понятней на шелле сделать. Кстати даже на шелл можно было бы обойтись одним вызовом wget, хотя если проверять аж два сайта, то таки да не нужно, как и БД.
>Это как то отменяет ваше неумение работать с perl и как следствие
>ругань на него? Вызов внешних программ в перловом скрипте лучше минимизировать,
>иначе зачем перл вообще нужен, проще/понятней на шелле сделать. Кстати даже
>на шелл можно было бы обойтись одним вызовом wget, хотя если
>проверять аж два сайта, то таки да не нужно, как и
>БД.дело в том что мне не только проверять а выцеплять определённую строку (версию софта). список примерно 15 сайтов, с каждым по очереди.
Ну так посмотрите наконец на LWP. Намного быстрее, да и проще будет скачать при помощи него в скаляр и тут же его распарсить вместо того, чтобы вызывать внешний wget, а потом читать файл. В LWP нет ничего сложного, гляньте хотя бы синопсис по этой ссылке:
http://search.cpan.org/~gaas/libwww-perl-5.812/lib/LWP/UserA...
Для 15 сайтов можно оставить и в таком виде, если количество станет расти, то используется LWP::Parallel, то есть несколько десятков запросов посылаются одновременно, что значительно ускоряет работу.
МОТОРОЛЛЕР НЕ МОЙ! Я ПРОСТО РАЗМЕСТИЛ ОБЪЯВУ!
>[оверквотинг удален]
>>>и апдейтил STATUS.
>>
>>с помощью команды mysql достаем/апдейтим нужные данные.
>>с помощью, например, wget пытаемся скачать страницу
>>
>>>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>>
>>Так от нас то что требуется?
>
>Как вызвать wget из Perl ?А зачем тебе Perl? По-моему, удобней просто shell-скрипт.
>[оверквотинг удален]
>>>с помощью команды mysql достаем/апдейтим нужные данные.
>>>с помощью, например, wget пытаемся скачать страницу
>>>
>>>>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>>>
>>>Так от нас то что требуется?
>>
>>Как вызвать wget из Perl ?
>
>А зачем тебе Perl? По-моему, удобней просто shell-скрипт.поздняк метаццо. всё уже готово.
>[оверквотинг удален]
>>>>с помощью, например, wget пытаемся скачать страницу
>>>>
>>>>>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>>>>
>>>>Так от нас то что требуется?
>>>
>>>Как вызвать wget из Perl ?
>>
>>А зачем тебе Perl? По-моему, удобней просто shell-скрипт.
> поздняк метаццо. всё уже готово.Ну так напиши здесь, или ты по методу "Я сам все решил, и фиг расскажу!"