2.8.8. memory_limit

Параметр memory_limit задає максимальний обсяг пам'яті, який можуть використовувати скрипти сайту. Він допомагає запобігати ситуаціям, коли неякісно написані скрипти витрачають всю доступну пам'ять сервера.

Встановлений для memory_limit обсяг пам'яті виділяється для кожного запущеного скрипта окремо, тому одночасний запуск декількох скриптів не може спожити всю виділену пам'ять memory_limit, але може спожити всю оперативну пам'ять хостинг-акаунта (можна побачити на графіках споживання серверних ресурсів). Важливо розуміти, що при запуску скрипта кількість пам'яті, що виділяється під ліміт memory_limit, не «забирається» з оперативної пам'яті. Пам'ять виділяється поступово в міру її споживання кожним скриптом, але не може перевищувати заданий ліміт, тому думка, що запустивши два скрипти при значенні memory_limit 1024 МБ буде використано відразу 2048 МБ, в корені невірна.

Визначити заздалегідь, скільки пам'яті або який ліміт memory_limit буде потрібно сайту або скрипту, практично неможливо, оскільки все залежить від якості самих скриптів і обсягів даних, які вони обробляють.

У разі перевищення скриптами сайту доступного обсягу пам'яті може виникати помилка «Fatal error: Allowed memory size of XXX bytes exhausted (tried to allocate YYY bytes)». З описом і варіантами її вирішення можна ознайомитися в тут.
  • Не впливає на швидкість роботи скриптів.
  • Максимальне значення залежить від використовуваного тарифу:
    • На звичайному хостингу: від 512 до 1536 МБ.
    • На бізнес-хостингу — в межах доступного за тарифом обсягу оперативної пам'яті.
  • Для консолі та cron значення за замовчуванням дорівнює 512 МБ. Його можна прирівняти до значення одного з сайтів, якщо під час запуску скрипта підключати ini-файл сайту.
Значення memory_limit у налаштуваннях PHP сайту не впливає на значення за замовчуванням у консолі та cron. Для запуску скрипта консольною командою зі значенням параметра, як на сайті, використовуйте інструкцію.
  1. Відкрийте розділ «Налаштування PHP» сайту, для якого потрібно змінити значення параметра.
  2. Вкажіть потрібне значення навпроти «php_memory_limit» і внизу сторінки натисніть «Зберегти»:
    • Доступні значення — від 1 МБ до максимально доступного в поточному тарифі.
    • Якщо вказати 0, після збереження значення буде дорівнювати максимально доступному в поточному тарифі.
  3. Зачекайте приблизно 10-15 хвилин, поки зміни набудуть чинності.

Увага!

Придбання додаткових послуг Memcache(d), Redis або OPcache не збільшує значення memory_limit.

На постійній основі:

  • Шляхом переходу на тариф вище.
  • Шляхом зміни значення memory_limit у налаштуваннях PHP сайту, якщо в тексті помилки вказано обсяг, менший за доступний у поточному тарифі.
Зміст

    Коментарі

    gusakovskyi
    Як змітит параметр для phpmyadmin?
    karlov
    Можете пояснити, для чого це потрібно і з якими саме труднощами ви зіткнулися? Як варіант, можете звернутися за консультацією в онлайн-чат.