programing

PHP: memory_limits > 1024M 설정이 작동하지 않음

luckcodes 2022. 11. 7. 22:15

PHP: memory_limits > 1024M 설정이 작동하지 않음

좋지 않은 이유로 디렉토리에 대해 memory_limits를 1GB보다 크게 설정해야 하는데, 예를 들어 2048M을 사용하면 PHP 5.2.17에서 php.ini 기본값(256M)만 표시됩니다.

PHP는 Apache 모듈로 실행되며 phpinfo는 다음을 제공합니다(디렉토리용).

memory_limit    1024M    256M
suhosin.memory_limit    0    0

Apache 모듈 또는 PHP 설정으로 인해 제한이 있습니까?서버의 RAM은 4GB밖에 없는 것으로 알고 있습니다.그냥 특별한 대본이에요.

메모리 제한을 설정하려면 어떻게 해야 합니까?phpinfo()는 현재 PHP 예약 메모리 제한을 나타냅니다.이것은 php.ini가 메모리 제한으로 설정되어 있기 때문에 사용할 수 있는 것입니다.

서버가 .htaccess를 통한 PHP 명령 설정을 지원하는 경우 스크립트 디렉토리의 Apache .htaccess 파일에 이 파일을 쓰는 것이 작동할 수 있습니다.

php_value memory_limit 2048M

PHP 값을 설정하기 위한 .htaccess 명령어가 꺼질 수 있기 때문입니다.그리고 PHP 코드에서 이것을 시도할 수도 있습니다.

ini_set('memory_limit', '2048M');

이것이 동작하지 않고 .htaccess도 동작하지 않는 경우는, 서버 관리자에게 문의해 주세요.

4GB의 RAM을 사용하기 위해 PHP 스크립트가 필요한 것과 같은 문제가 있었습니다.이유는 중요하지 않다.목표는 PHP에서 4GB 제한을 설정하는 것이었습니다.

당초의 생각은,ini_set('memory_limit', '4096M');근데 이게 안 되더라고요.솔직히 말하면 어떻게 해야 할지, 왜 해야 할지 모르겠지만 그때는 그게 중요하지 않았어요.32GB의 RAM을 탑재한 시스템을 사용하고 있으며, 이것이 가능해야 합니다.

1MB를 적게 설정하는 것이 실제로 효과가 있다는 것을 알게 되었고, 이 솔루션은 저에게 효과가 있었습니다.

ini_set('memory_limit', '4095M'); // 4 GBs minus 1 MB

실제로 실제로 사용해 본 적은 없지만, 시스템에서 이 값을 사용하면 메모리 제한이 완전히 해소되는 것 같습니다.시스템에서 제공하는 RAM의 용량을 최대한으로 늘릴 수 있습니다.

ini_set("memory_limit",-1);

일반적으로 제한을 제거합니다.

Hardened-PHP - Configuration에서 설명한 바와 같이 Suhosin에서는 스크립트가 시작된 값보다 큰 값을 설정할 수 없습니다.

suhosin.memory_limit2048M으로 설정하면 메모리 사용량을 늘릴 수 있습니다.

의 한계

ini_set('memory_limit', '4095M'); // 4 GBs minus 1 MB

운영체제(OS)와 관련되어 있습니다.32비트 OS에서는 이 최대 제한을 사용해야 합니다.

이 회피책을 사용하여 오늘 memory_limit 문제를 해결했습니다.

더 높은 제한을 사용하면 PHP에서 이상한 동작이 발생합니다.클래스가 인스턴스화되었을 때 일부 퍼블릭비정적 메서드클래스에서 소진된 메모리를 반환하지만 (문제를 테스트하기 위해) __construct 메서드에 die()를 넣습니다.

언급URL : https://stackoverflow.com/questions/9276212/php-settings-memory-limits-1024m-does-not-work