2009-03-06 3 views
11

PHP 5.0.4에서 으로 설정되지 않는 경우 memory_limit 지정 문이 무시됩니다. (권장되는 php.ini 파일에서 8M로 설정되었지만 설명서에 무시되었다고되어 있습니다.) 그래서이 경우 스크립트 당 메모리 제한이 있습니까? 아니면 시스템에 의해서만 제한됩니까?PHP 메모리 한계

PHP 5.2.8로 업그레이드 중이므로 이 기본적으로 메모리 제한을 허용하는지 묻습니다. 이제는 실제로 값을 적절한 값으로 설정해야합니다. 이제 권장 php.ini 파일은 128M으로 설정되었지만, 이 더 많은지 또는 보다 작 으면 5.0.4가 기본적으로 수행 한 것보다 나을지 모르겠다!

프로덕션 시스템을 업그레이드 중이므로 동작이 크게 변경되지 않도록하십시오. documentation ("memory_limit"으로 검색)은이 시점에서 매우 혼란 스럽습니다. 그것은 "기본"이라고 말하지만, 설정 파일에 설정된 기본값이나 메모리 제한이 사용되지 않을 때 사용하는 기본값인지 여부를 알지 못합니다.

답변

9

PHP의 메모리 제한은 선택 사항입니다. 컴파일 타임에 비활성화하면 전혀 제한이 없습니다.

5.0.4에서는 컴파일 타임에 메모리 리미터가 useless until 5.2이고 mysql 함수와 같은 많은 일들을 포함하지 않았기 때문에 명시 적으로 컴파일 타임에 요청하지 않으면 사용할 수 없습니다. 이제는 계산하는 것을 배웠던 에서 5.2.1로 변경되었습니다.

의심스러운 경우 비활성화하거나 새 기본값을 사용하도록 구성 파일을 업데이트하십시오. 8MB로 유지하고 5.2.8로 업그레이드하면 거의 확실하게 문제가 발생할 것입니다.

4

128M은 매우 높습니다. 당신은 그것을 필요로 할지도 모르지만 나는 놀랄 것입니다.

점에 더는 한계는 php.ini 파일에서 전역 기본 설정 될 수 있습니다

memory_limit = 32M 

또한 스크립트를 재정의 할 수

<?php 
ini_set('memory_limit', '128M'); 
... 

당신은 아마 찾을 수 있습니다 당신은 오직 많은 메모리를 필요로하는 스크립트 만 가지고 있습니다. 테스트를 통해 편안한 가치를 찾은 다음 더 많은 것을 필요로하는 것을 위해 위로 올리십시오.

+1

제 질문은 : 5.0.4에서 memory_limit을 설정하지 않은 경우에도 여전히 시행하나요? –

+3

+1, PHP의 가비지 수집기가 두 번 이상 끊어졌습니다. 시간 초과를 없애는 것이 매우 인기가 있기 때문에 코드가 실제로 컴퓨터에 무엇이 있는지를 아는 것이 중요합니다. –

3

5.2 이전의 PHP의 기본 메모리 제한은 8MB 였으므로 PHP 5.2.0에서는 기본값 인 16MB로 증가되었습니다. 현재 기본값은 128MB입니다.

pre 5.2 버전의 동작을 재현하려면 명시 적으로 메모리 제한을 8MB로 설정하십시오.

php.net 웹 사이트의 "리소스 제한"을보십시오.

http://us.php.net/ini.core

편집

"PHP 5.2.1 이전에,이 지시자를 사용하기 위해서는 그것을 구성 라인에 -enable-메모리 제한을 사용하여 컴파일시에 활성화했다 . "

이전 서버의 컴파일 플래그를 확인하십시오. 사용하지 않으면 사용 제한이 적용되지 않습니다.

+1

8MB가 실제로 적용되는지 알고 있습니까? 그것은 php.ini의 설정에 대한 기본값 이었지만, 문서에서는 설정이 무시되었다고합니다. –

+0

나는이 답변에 투표하지 말았습니다. 사고였습니다. – boclodoa