В настоящее время я работаю над проектом, который включает в себя сканирование определенных веб-сайтов. Однако иногда моя программа Perl «застряла» на веб-сайте по какой-либо причине (не могу понять, почему), и программа замерзнет в течение нескольких часов. Чтобы обойти это, я вставил код в тайм-аут подпрограммы, которая просматривает веб-страницу. Проблема в том, что, скажем, я установил будильник на 60 секунд, большую часть времени, когда страница будет тайм-аут правильно, но иногда программа не будет таймаутом и просто сидит часами подряд (может быть, навсегда, так как я обычно убиваю программа).Perl alarm работает с перерывами
На очень плохих веб-сайтах программа Perl будет просто есть в моей памяти, принимая 2,3 ГБ оперативной памяти и 13 Гбайт свопа. Также использование процессора будет высоким, и мой компьютер будет вялым. К счастью, если это время, все ресурсы быстро освобождаются.
Это мой код или проблема с Perl? Что я должен исправить и почему это вызвало эту проблему?
Благодаря
Вот мой код:
eval {
local $SIG{ALRM} = sub { die("alarm\n") };
alarm 60;
&parsePageFunction();
alarm 0;
};#eval
if([email protected]) {
if([email protected] eq "alarm\n") { print("Webpage Timed Out.\n\n"); }#if
else { die([email protected]"\n"); }#else
}#if
Пожалуйста, вставьте/опишите вашу функцию синтаксического разбора/сканирования/выскабливания, спасибо. – miedwar