현재 특정 웹 사이트 크롤링과 관련된 프로젝트를 진행 중입니다. 그러나 때로는 내 Perl 프로그램이 어떤 이유로 웹 사이트에 "갇혀"(이유를 알 수 없으므로) 몇 시간 동안 프로그램이 멈추는 경우가 있습니다. 이 문제를 해결하기 위해 웹 페이지를 크롤링하는 서브 루틴에서 시간 초과를위한 코드를 삽입했습니다. 이 문제는, 내가 60 초, 대부분의 페이지가 올바르게 시간 초과됩니다 알람을 설정할 수 있습니다,하지만 때로는 프로그램이 시간이 끝나지 않고 단지 몇 시간 동안 앉아서 (어쩌면 영원히 내가 보통 죽일 이후 프로그램).간헐적으로 펄 알람 작동
정말 나쁜 웹 사이트에서 Perl 프로그램은 2.3GB의 RAM과 13GB의 스왑을 사용하여 내 메모리를 통해 먹을 것입니다. 또한 CPU 사용량이 높아지고 컴퓨터가 느려집니다. 다행히도 시간이 만료되면 모든 리소스가 빨리 릴리스됩니다.
내 코드 또는 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