Я заметил, что многие ответы просто пытаются увеличить объем памяти, выделяемый скрипту, который имеет свое место, но чаще всего это означает, что с памятью что-то слишком либерально из-за непредвиденного объема или размера. Очевидно, что если вы не являетесь автором сценария, то это зависит от автора, если только вы не амбициозны :) Документы PHP даже говорят, что проблемы с памятью связаны с " плохо написанными сценариями "
Следует отметить, что ini_set('memory_limit', '-1');
(без ограничений) может вызвать нестабильность сервера как 0 bytes free = bad things
. Вместо этого найдите разумный баланс между тем, что пытается сделать ваш скрипт, и объемом доступной памяти на машине.
Лучший подход: Если вы автор сценария (или амбициозный), вы можете отладить такие проблемы с памятью с помощью xdebug . Последняя версия (2.6.0 - выпущена 2018-01-29) вернула профилирование памяти, которое показывает, какие вызовы функций занимают большие объемы памяти. В скрипте выявляются проблемы, которые иначе трудно найти. Как правило, неэффективность находится в цикле, который не ожидает объем, который он получает, но каждый случай будет оставлен читателю в качестве упражнения:)
Документация xdebug полезна, но сводится к 3 шагам:
- Установите его - Доступно через
apt-get
и yum
и т. Д.
- Настройте его - xdebug.ini:
xdebug.profiler_enable = 1
, xdebug.profiler_output_dir = /where/ever/
- Просмотр профилей в таком инструменте, как QCacheGrind , KCacheGrind