Фатальная ошибка: допускается размер памяти 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.
глядя на файл, который бросил неустранимая (dbo_mysql.php
) Я предполагаю, что ваш вызов извлекает данные из базы данных.
кроме того, глядя на лимит памяти, он показывает 134217728 байт, что составляет 128MB, поэтому я думаю, что независимо от того, что делает ваш вызов API, пытается получить много данных, которые в общей сложности превышают лимит, выделенный на скрипт.
Например, если последний скрипт в стеке вызовов API должен был использовать 20MB
для его нужд, а затем шины для извлечения данных из DB стоит 115MB
, ваш скрипт будет пытаться выделить 135MB
которые уже 7MB
больше, чем предел и, таким образом, вызывая Fatal Exception
.
Итак, я вижу несколько вещей, чтобы проверить/сделать:
- что вы не извлекаете ненужные данные или, другими словами, извлекаете только то, что вам нужно.
- если вы действительно нужны все эти данные, то
- увеличить
memory_limit
стоимостью под
Con: если ваши данные продолжают расти, вам может потребоваться постоянно обновлять это значение только для одного сценария и подвергать себя утечкам памяти или исчерпанию памяти. - или я бы рекомендовал вам реализовать своего рода разбиение на страницы (что позволит вам держать ограничения памяти под контролем) и сделать ваше приложение более масштабируемым.
- увеличить