2011-04-28 3 views
0

누구나 Simple_DOM 메모리 문제를 해결하는 데 운이 좋았습니까? 나는이 포럼을 샅샅이 뒤져서 다른 파싱 엔진에 대해서만 권장 사항을 찾았습니다.Simple_DOM 메모리 제한 치명적인 오류를 수정하는 방법?

내 스크립트는 20,000 파일을 통해 루프와 각 하나 개의 단어를 추출합니다. 매번 file_get_html 함수를 호출해야합니다.

  • 다른 서버로 이전. 같은 결과.
  • 은 while 루프에 foreach 루프 변경됨.
  • 증가 메모리 제한, 두 서버. 작동하지 않습니다.

답변

0

예 아니요. ini_set()으로 메모리를 늘릴 수는 있지만 그럴 권한이 있습니다. 당신이 설정되지 않은 데이터의 큰 세트를 포함하는 변수를 작업을 완료 할 때, 루프를 통과 할 때 내가 추천하는 것입니다.

for($i=0;$i < 30000;$i++){ 
    $file = file_get_contents($some_path.$i); 
    // do something, like write to file 

    // unset the variables 
    unset($file); 
} 

물론 이것은 단지 예입니다,하지만 당신은 모든 요청이 실행 파일처럼 처음 확인하여 codeand에 관련이 있습니다.

당신에게 행운을 빕니다 :)

0

는 하나의 실행 중에 많은 데이터가 결함이 처리에 대한 접근 방식처럼 날 것으로 보인다 위시. 필자의 경험에 따르면, PHP cli는 오랜 기간 동안 실행되어 많은 데이터를 처리하지 못합니다. 그렇게하기 위해서는 매우 조심스럽게 메모리 관리가 필요합니다. 새어 나가는 제 3 자 스크립트를 던지고, 책상에서 머리를 치는 방법이 있습니다.

한 번에 20k 개의 파일을 모두 실행하지 않고 한 번에 수백 개의 파일을 처리하고 MySQL 데이터베이스와 같은 중간 결과를 저장 한 다음 모든 파일이 처리되면 결과를 수집 할 수 있습니다. .

+0

그래 그게 내가 그 일을 결국 한 방법 - 또한, 이미지를 사용하지 않도록 설정하면 웹 URL을 구문 분석 할 때 도움이 보인다. – user723220

관련 문제