Ограничение памяти PHP - PullRequest
       20

Ограничение памяти PHP

12 голосов
/ 07 марта 2009

В PHP 5.0.4, если вы не настраиваете -enable-memory-limit, директива memory_limit игнорируется. (В рекомендованном файле php.ini он установлен равным 8M, но в документации говорится, что он игнорируется.) В таком случае, существует ли ограничение памяти для каждого сценария или оно ограничено только системой?

Я спрашиваю, потому что я обновляюсь до PHP 5.2.8, а позволяет разрешать ограничение памяти по умолчанию. Так что теперь я на самом деле должен установить значение на что-то подходящее. Рекомендуемый файл php.ini теперь имеет значение 128M, но я не знаю, на больше или меньше , чем то, что 5.0.4 сделал по умолчанию!

Я модернизирую производственные системы, поэтому я бы хотел избежать каких-либо серьезных изменений в поведении. Документация (поиск "memory_limit") очень запутанная в этом вопросе. Он говорит «по умолчанию», но я не знаю, означает ли это значение по умолчанию, установленное в файле конфигурации, или значение по умолчанию, которое он использует, когда ограничение памяти отключено.

Ответы [ 3 ]

9 голосов
/ 08 марта 2009

Ограничитель памяти в PHP не является обязательным; если вы отключите его во время компиляции, то никаких ограничений вообще не будет.

В 5.0.4 он отключен, если вы явно не спросили его во время компиляции, причина в том, что ограничитель памяти был бесполезным до 5.2 и не считал много вещей, которые он должен был сделать, в том числе такие вещи, как функции MySQL. Теперь он научился считать на из 5.2.1.

Если сомневаетесь, отключите его или убедитесь, что вы обновили файл конфигурации, чтобы использовать новое значение по умолчанию. Если оставить его на 8 МБ и обновить до 5.2.8, это почти наверняка вызовет проблемы.

4 голосов
/ 07 марта 2009

128М очень высоко. Вам может понадобиться это, но я буду удивлен.

Более того, в php.ini можно установить ограничение по умолчанию:

memory_limit = 32M

Вы также можете переопределить его в сценариях:

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

Вы, вероятно, обнаружите, что у вас есть только несколько сценариев, которые требуют много памяти. Найдите какое-нибудь удобное значение (с тестированием), а затем просто поднимите его для тех, кому нужно больше.

3 голосов
/ 07 марта 2009

Предел памяти по умолчанию в php до 5.2 был 8 МБ, в php 5.2.0 он был увеличен до значения по умолчанию 16 МБ. В настоящее время по умолчанию используется 128 МБ.

Чтобы воспроизвести поведение версий до 5.2, явно установите ограничение памяти в 8 МБ.

Смотрите в разделе «Лимиты ресурсов» на сайте php.net.

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

EDIT

"До PHP 5.2.1, чтобы использовать эту директиву, ее нужно было включить во время компиляции с помощью -enable-memory-limit в строке конфигурации."

Проверьте флаги компиляции вашего старого сервера, если вы не включили его, никакие ограничения не были применены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...