Керування файлами cookie, які використовуються для реклами, таких як персоналізація реклами, ремаркетинг і аналіз ефективності реклами.
2.4.3.8. Помилка Fatal error: Allowed memory size
Помилка «Fatal error: Allowed memory size» означає, що скрипт в процесі своєї роботи перевищив значення параметра PHP memory_limit поточного тарифного плану.
Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes) in /home/example/example.com/www/path/to/script.php on line Z
Х— доступний обсяг пам’яті, заданий параметром PHP memory_limit, В байтах.Y— обсяг пам’яті, який скрипт намагався використовувати понад доступного обсягу в момент виникнення помилки, В байтах./home/example/example.com/www/path/to/script.php— повний шлях до скрипта, при виконанні якого виникла помилка.Z— номер рядка в скрипті, де виникла помилка.
Увага!
Сума значеньX + Y не є необхідним значенням memory_limit, оскільки Y показує кількість пам’яті, якого не вистачило на момент аварійного завершення скрипта, І в разі подальшої роботи скрипт може зажадати набагато більший обсяг пам’яті.
Можливі причини
Найчастіше помилка виникає в наступних ситуаціях:
- Найпоширеніша ситуація, при якій скрипт вичерпує всю доступну пам’ять, це робота з зображеннями. Формати PNG і JPG стискають зображення, але для роботи з ним PHP завантажує його в пам’ять попиксельно, ніби воно збережено в форматі BMP. Це призводить до того, що скрипту не вистачає пам’яті для обробки зображення. Щоб похибка не виникала, варто зменшувати розміри зображень перед їх завантаженням на сайт і не розраховувати на те, що PHP сам змінить формат зображень з високою роздільною здатністю.
- Виконання запитів до бази даних, які повертають занадто великі обсяги інформації, які не вміщаються в доступну пам’ять.
- Обробка XML-файлів великого обсягу.
- Запуск вимогливих до ресурсів або просто неоптимізованих скриптів і модулів.
Варіанти вирішення
Рішенням проблеми може бути:
- Зміна значення memory_limit в настройках PHP, Якщо встановлено не максимально доступне за поточним тарифом значення.
- Якщо на сайті використовуються скрипти морально застарілих версій, обов’язково перевірте, чи відповідає встановлена для сайту версія PHP рекомендованої розробником сайту. Якщо немає, змініть її на потрібну і перевірте роботу сайту приблизно через 10-15 хвилин.
- Зменшення розміру оброблюваних скриптом файлів, аналіз роботи і оптимізація самого скрипта або модуля з метою зменшення споживання їм пам’яті.
- Зміна тарифу на інший, з великим значенням memory_limit.
Увага!
При зміні тарифного плану слід враховувати, що це допоможе лише у випадках, коли вимоги до пам’яті пред’являються розробниками СМS, а також в деяких випадках обробки великих файлів. У разі вимогливого до ресурсів скрипта (як правило самописного) виправляти потрібно сам скрипт.
Примітка для WordPress: Якщо розмір фактично виділеної пам’яті (значення Х) Менше значення PHP memory_limit використовуваного тарифного плану, необхідно в файл wp-config.php додати рядок:
define('WP_MEMORY_LIMIT', 'xxxM');
Де xxx — значення memory_limit тарифного плану.