Предел памяти PHP

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

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

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

Related of "Предел памяти PHP"

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

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

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

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

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

memory_limit = 32M 

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

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

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

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

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

Посмотрите в разделе «Ограничения ресурсов» на веб-сайте php.net.

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

РЕДАКТИРОВАТЬ

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

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