2010-02-09 4 views

답변

1

나는 PHP로 무차별 대청소를 많이했고 순차적 인 처리가 잘된 것처럼 보입니다. 나는 당신에게 "오랜 세월"을 확신하지 못한다. 그러나 나는 긁는 동안 다른 것들을 자주한다.

일반적으로 실시간으로 내 근근이 살아가는 것에 의존하는 것은 없으며, 그 데이터는 중요한 것으로서 나는 보통 그것을 긁어내어 동시에 마사지합니다.

다른 경우 사이트를 풀다가 로컬로 저장하는 데는 간소한 wget 명령을 사용합니다. 그런 다음 일부 정규식 매직으로 PHP 스크립트를 추출하여 데이터를 추출하십시오.

PHP에서 curl_ *을 사용하고있어 매우 효과적입니다.

부모 프로세스는 하위 프로세스에서 URL을 제공하여 프로세스하고 데이터를 로컬로 (db, fs 등) 저장하도록 설정할 수 있습니다. 부모는 동일한 URL이 두 번 처리되지 않고 자식이 응답하지 않도록해야합니다.

리눅스 (pcntl_, 포크 등)에서 쉽게 할 수 있으며, 윈도우 박스에서는 더 어렵습니다.

콘텐츠를 변경하지 않았거나 이미 갖고있는 경우 마지막 수정 시간과 (이전에 저장 한) 일부 논리를 추가하여 페이지 스크랩을 건너 뛸 수 있습니다. 아마 당신이 할 수있는 것처럼 최적화 트릭이 잔뜩 있습니다.

+0

옙은 나에게 가장 좋은 옵션과 같은 소리를 내고 있습니다. – Tim

0

curl_multi_add_handle 및 curl_multi_select에서 cURL을 올바르게 사용하는 경우 수행 할 수있는 일이 많지 않습니다. 테스트를 통해 시스템에서 처리 할 최적의 핸들 수를 찾을 수 있습니다. 대역폭이 너무 적 으면 대역폭을 너무 많이 사용하지 않고 핸들을 전환하는 데 너무 많은 시간을 낭비하게됩니다.

master-worker 다중 프로세스 패턴을 사용하면 많은 스크립트 인스턴스가 cURL을 사용하여 페치하고 나중에 페이지 블록을 처리하여 각각 병렬로 실행되도록 할 수 있습니다. http://gearman.org/?id=gearman_php_extension과 같은 프레임 워크는 우아한 솔루션을 만드는 데 도움이되지만 Unix에서 프로세스 제어 기능을 사용하거나 백그라운드에서 스크립트를 호출하는 것 (시스템 쉘 또는 비 차단 HTTP를 통해)도 잘 작동 할 수 있습니다.

관련 문제