Подтвердить что ты не робот

Предел памяти 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" , но я не знаю, означает ли это значение по умолчанию, заданное в файле конфигурации, или значение по умолчанию, которое оно использует, когда ограничение по памяти отключено.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

memory_limit = 32M

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

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

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

Ответ 3

Предел памяти по умолчанию в 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, чтобы использовать эту директиву, ее нужно было включить во время компиляции, используя ограничение -enable-memory-limit в строке конфигурации.

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