나는 끔찍한 오류 메시지, 아마도 고통스러운 노력을 통해 PHP에 메모리가 부족합니다.
123 행의 file.php에서 #### 바이트의 허용 된 메모리 크기가 소진되었습니다 (#### 바이트 할당 시도).
한계 늘리기
수행중인 작업을 알고 제한을 늘리려면 memory_limit 참조하십시오 .
ini_set('memory_limit', '16M');
ini_set('memory_limit', -1); // no limit
조심하세요! 문제가 아닌 증상 만 해결할 수 있습니다!
누출 진단 :
오류 메시지는 메모리 누수 또는 불필요하게 축적 된 것으로 생각되는 루프가있는 줄을 가리 킵니다. memory_get_usage()
각 반복이 끝날 때마다 문을 인쇄 했으며 한계에 도달 할 때까지 숫자가 천천히 증가하는 것을 볼 수 있습니다.
foreach ($users as $user) {
$task = new Task;
$task->run($user);
unset($task); // Free the variable in an attempt to recover memory
print memory_get_usage(true); // increases over time
}
이 질문의 목적을 위해 상상할 수있는 최악의 스파게티 코드가 $user
또는 어딘가에 전역 범위에 숨어 있다고 가정합시다 Task
.
어떤 도구, PHP 트릭 또는 부두 디버깅이 문제를 찾고 해결하는 데 도움이 될 수 있습니까?