2011-08-17 4 views
-1

오류 중 :치명적인 오류 : 메모리

Fatal error: Out of memory (allocated 123469824) (tried to allocate 71 bytes) in /home/test/tset/tset.net/public_html/test/simple_html_dom.php on line 1236

예, 나는이 많은 문제가 있다고 알고 있습니다. 그러나 나는이 실수를 피하는 것이 얼마나 쉬운 지 깨닫지 못했다. 이 오류가 발생하면 다음 값에서 루프를 시작하면됩니다.

내가 사용 simplehtmldom

코드 :

$html = file_get_html('http://www.windowsaffinity.com/?p=14721'); 

편집 : YES * 최대 메모리 크기가 충분하지 *

+0

당신의 코드를 게시하시기 바랍니다 페이지를 가져 오지 소켓을 사용 (작은 덩어리에서 데이터를 읽고, 파일 또는 w/E에 저장) 시스템 명령을 실행하거나하는 것입니다. 귀하의 PHP 코드는 php.ini에서 허용 된 메모리 이상을 사용했습니다. – Raptor

+1

여기에 질문이 있습니까? –

+0

나는 실수를 이해하고, 나는 그것을 피하는 법을 모른다. – Mediator

답변

1

당신은 PHP에서 치명적인 오류를 잡을 수 없습니다. 그들은 결국 치명적입니다.

당신이하려는 일을 정확하게 알지 못하면 스크립트를 다시 시작할 수있을 때까지 일종의 카운터 또는 다른 위치 매개 변수를 데이터베이스 또는 다른 파일에 "장소를 유지"할 수 있습니다.

메모리가 부족한 경우 더 큰 문제가 있습니다. 당신의 호스팅은 당신이하려고하는 것에 비해 너무 작거나 씹을 수있는 것보다 더 많이 물고 있습니다. 프로세스를 여러 부분으로 나누어보고 unset()으로 전화하거나 사용하는 공간을 제한하기 위해 변수에 null을 할당하고 가비지 수집기에 개체 수집 자격을 알리기 위해 변수에 할당하십시오.

1

ini_set을 통해 PHP의 메모리 제한을 높일 수 있지만 스크립트 기반 (예 : 매우 큰 xml/etc 파일에서 데이터 가져 오기)에서만 수행해야합니다. 기억 한계를 높이는 데 도움이되는 훌륭한 질문 - Increasing PHP memory_limit. At what point does it become insane?.

편집 : 귀하의 경우 업데이트 게시를 읽으십시오. 한 번 사용하기 위해 빠른 스크립트 작성을 가정 할 때 메모리 제한을 높입니다. ini_set이 비활성화 된 경우 (즉, 공유 호스트에있는 경우) php.ini에서 memory_limit를 설정하십시오.

또 다른 옵션은 (예를 들어, wget -O /save/here.txt http://blah.com)