В 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», но я не знаю, означает ли это значение по умолчанию, заданное в файле конфигурации, или значение по умолчанию, которое оно использует, когда ограничение памяти отключено.
Ограничитель памяти в 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.
РЕДАКТИРОВАТЬ
«До того, как PHP 5.2.1, чтобы использовать эту директиву, ее нужно было включить во время компиляции, используя ограничение« с возможностью использования памяти »в строке конфигурации».
Проверьте флаги компиляции старого сервера, если у вас его нет, никаких ограничений не было.