"치명적인 오류 : 메모리가 부족합니다 (할당 된 30408704) (24 바이트를 할당하려고했습니다.). . "PHP 치명적인 오류. Apache를 통해 제공되는 페이지는이 동작을 나타내지 않습니다.PHP 명령 줄 스크립트가 php.ini 및 ini_set ('memory_limit', ...) 지시문을 무시합니다.
- 훨씬 더 큰 값으로 php.ini 파일에서 memory_limit를 증가 :
나는 다음과 같은 시도했습니다.
- 메모리를 확보하기 위해 가비지 컬렉터를 장려하기 위해 불필요한 배열과 객체를 보내고,
ini_set('memory_limit', -1)
에 호출을 통해 스크립트 자체 내에서ini_set('memory_limit', '-1')
,ini_set('memory_limit', 100000000)
,ini_set('memory_limit', '128M')
등 unset()
을 memory_limit를 증가.- 웹 호스트에 문의 중입니다. 그들은 일반적으로 매우 유능하고 지식이 풍부하지만이 문제에 대해서도 저를 도울 수 없었습니다.
-c
명령 줄 플래그를 사용하여 php.ini 파일을 명시 적으로 시도하여 다양한 값으로 특정 php.ini 파일을 직접 선택했습니다.- 나는 원시 바이트 수와 64M, 128M 등의 값을 모두 사용하여 php.ini에서 memory_limit을 설정해 보았습니다.
- 호스팅 제공 업체는 문제없이 루트로 스크립트를 실행할 수 있었지만 내 비 루트 사용자를 사용하여 실행할 때도 동일한 문제가 발생합니다. 아마도 어떤 종류의 사용 권한 문제가 관련되어 있습니까?
내가 시도한 것과 관계없이 오류 메시지는 같습니다. 내 명령 행 스크립트가 memory_limit
의 변경 사항을 무시하는 것 같습니다.
필자의 스크립트가 메모리 효율을 높이는 경향이 있지만, 현재 Simple HTML DOM을 통해 많은 양의 HTML을 구문 분석해야하며 파서에 메모리 문제가 발생했습니다. 스크립트의 메모리 사용량을 줄이기 위해 대신 DOMDocument을 사용해 보았습니다. 이것은 도움이되지 않습니다. 실제로 메모리 부족 오류는 이제 스크립트의 다른 위치에서 트리거됩니다.
내 질문 :이 문제가 발생 했습니까? 추천이 있으십니까?
감사합니다.
좋아, 이것은 훨씬 더 어렵지만 무한 루프에 대한 코드를 확인해야 할 것입니다. 나는 divide-and-conquer debug를 권장한다. "Out of Memory"오류를 발생시키는 코드의 예를 들어 보겠습니다. function returnSomething ($ what) {return return return return return return return return } returnSomething (true);'will dump '치명적 오류 : 134217728 바이트의 메모리 크기가 소모되었습니다 (261900 바이트 할당 시도) ...' – Dereleased
주사위가 없습니다. 내 호스팅 계정 관리자는 루트 사용자로 아무 문제없이 내 스크립트를 실행할 수있었습니다. 또한, 내 스크립트는 내 로컬 dev 컴퓨터에서 잘 실행됩니다. – jkndrkn