Фатальная ошибка: допускается размер памяти 134217728 байт исчерпаны (пытался выделить 87 байт)

при входе в мое веб-приложение он показывает ошибку, как:

фатальная ошибка: разрешены памяти размером 134217728 байт исчерпаны (пытался выделить 87 байт) в /gt/2.ps.fo/home/hft/domains/console.fo.spalgo.com/public_html/cake/libs/model/datasources/dbo/dbo_mysql.php на линии 775

есть ли решение данной проблемы? Почему я получаю эту ошибку?

5 ответов


это звучит так, как будто вы выделили больше памяти чем PHP позволит. Отредактируйте memory_limit настройка на вашем сайте php.ini настройки как описано на ссылке.

другая возможность (менее вероятно) заключается в том, что вы попали в setrlimit(2) ограничения ресурсов для пользователей или группы. Проверка /etc/security/limits.conf для ограничений, которые могут быть установлены для вашего веб-сервера, наряду с любыми сценариями инициализации запустите среду сервера и среду интерпретатора PHP.


первый пример, который я нашел при поиске "PHP из памяти", - это этот


попробуйте использовать echo вместо хранения того, что вы печатаете в переменную сначала.


ini_set('memory_limit', '-1');

глядя на файл, который бросил неустранимая (dbo_mysql.php) Я предполагаю, что ваш вызов извлекает данные из базы данных.

кроме того, глядя на лимит памяти, он показывает 134217728 байт, что составляет 128MB, поэтому я думаю, что независимо от того, что делает ваш вызов API, пытается получить много данных, которые в общей сложности превышают лимит, выделенный на скрипт.
Например, если последний скрипт в стеке вызовов API должен был использовать 20MB для его нужд, а затем шины для извлечения данных из DB стоит 115MB, ваш скрипт будет пытаться выделить 135MB которые уже 7MB больше, чем предел и, таким образом, вызывая Fatal Exception.

Итак, я вижу несколько вещей, чтобы проверить/сделать:

  1. что вы не извлекаете ненужные данные или, другими словами, извлекаете только то, что вам нужно.
  2. если вы действительно нужны все эти данные, то
    • увеличить memory_limit стоимостью под
      Con: если ваши данные продолжают расти, вам может потребоваться постоянно обновлять это значение только для одного сценария и подвергать себя утечкам памяти или исчерпанию памяти.
    • или я бы рекомендовал вам реализовать своего рода разбиение на страницы (что позволит вам держать ограничения памяти под контролем) и сделать ваше приложение более масштабируемым.