2.8.7. memory_limit
О параметре
Параметр memory_limit задаёт максимальный объём памяти, который могут использовать скрипты сайта. Он помогает предотвращать ситуации, когда некачественно написанные скрипты расходуют всю доступную память сервера.
Как работает лимит
Установленный для memory_limit объём памяти выделяется для каждого запущенного скрипта отдельно, поэтому одновременный запуск нескольких скриптов не может потребить всю выделенную память memory_limit, но может потребить всю оперативную память хостинг-аккаунта (можно увидеть на графиках потребления серверных ресурсов). Важно понимать, что при запуске скрипта количество памяти, выделяемое под лимит memory_limit, не «забирается» из оперативной памяти. Память выделяется постепенно по мере её потребления каждым скриптом, но не может превышать заданный лимит, поэтому мнение, что запустив два скрипта при значении memory_limit 1024 МБ будет использовано сразу 2048 МБ, в корне неверно.
Определить заранее, сколько памяти или какой лимит memory_limit потребуется сайту или скрипту, практически невозможно, так как всё зависит от качества самих скриптов и объёмов данных, которые они обрабатывают.
Значение параметра
- Не влияет на скорость работы скриптов.
- Максимальное значение зависит от используемого тарифа:
- На обычном хостинге:
- В актуальных тарифах — от 512 до 1536 МБ.
- В архивных тарифах — от 64 до 256 МБ .
- На бизнес-хостинге — в пределах доступного по тарифу объёма оперативной памяти.
- Для консоли и cron значение по умолчанию равно 512 МБ. Его можно приравнять к значению одного из сайтов, если при запуске скрипта подключать ini-файл сайта.
Настройка
- Откройте раздел «Настройки PHP» сайта, для которого нужно изменить значение параметра.
-
- Доступные значения — от 1 МБ до максимально доступного в текущем тарифе.
- Если указать 0, после сохранения значение будет равно максимально доступному в текущем тарифе.
- Подождите примерно 10-15 минут, пока изменения вступят в силу.
Увеличение
Внимание!
Покупка дополнительных услуг Memcache(d), Redis или OPcache не увеличивает значение memory_limit.- Временное — на 2 часа до 256 МБ с помощью Turbo Boost (актуально для архивных тарифов с memory_limit 64 или 128 МБ).
- На постоянной основе:
- Путём перехода на тариф выше.
- Путём изменения значения memory_limit в настройках PHP сайта, если в тексте ошибки указан объём меньше доступного в текущем тарифе.