apache — PHP память исчерпана, даже я уверен, что у меня есть больше

Мой прекрасный скрипт начал выдавать ошибку:

Неустранимая ошибка PHP: допустимый объем памяти 12582912 байт исчерпан (попытка выделить 78 байт)

и я уверен, что мой лимит памяти не 12 МБ. Также это не относится к скрипту, так как я знаю, что могу запустить его на своем локальном хосте. По словам Codeigniter Profiler, ему необходимо 17 МБ памяти.

Так что может быть причиной этого? Почему мой сервер считает, что он имеет ограничение памяти 12 МБ …

-1

Решение

Вы можете попробовать использовать ini_set (‘memory_limit’, ‘2048M’); в вашем PHP-коде.

Не рекомендуется устанавливать его так высоко, но вы можете понизить его позже, когда найдете реальную причину.

http://php.net/manual/en/function.ini-set.php

Затем вы можете использовать эту функцию: memory_get_usage (), чтобы проверить, сколько памяти использует ваше приложение в определенной строке. Используйте его, чтобы найти конкретную строку, где есть утечка.

http://php.net/manual/en/function.memory-get-usage.php

1

Другие решения

Вы можете увеличить память следующим образом:

 ini_set('memory_limit','256M');
0

Тот факт, что у вашего сервера больше памяти, не означает, что он будет или должен выделять все это одной особенно жадной системе сценариев (в противном случае одна ошибка кодирования может уничтожить все ресурсы системы).
Поэтому PHP накладывает свое собственное ограничение на то, сколько ему разрешено брать. Если вы измените свой файл htaccess, добавив:

 php_value memory_limit 20M

должно позволять занимать до 20Мб. Очевидно, что вы можете поиграть с этим, чтобы увидеть, сколько вам нужно (попробуйте сначала понизить его и посмотреть, изменится ли число в этом случае ошибки).

Вы можете узнать больше о memory_limit на Сайт PHP.net

Обратите внимание, что вам действительно следует попытаться уменьшить объем памяти, необходимый вашему сценарию (потому что другие системы на сервере теперь будут получать меньше), но это решение, по крайней мере, поможет вам в этом.

И как уже говорили другие, вы также можете использовать ini_set для установки той же переменной в начале этого конкретного скрипта, и затем она вернется к стандартному в конце работы. Однако обратите внимание, что (по очевидным причинам) некоторые серверы не позволяют своим сценариям просто сказать «Мне нужны все ресурсы для моей Srz Bzns» и истощить остальную часть сервера.

0