2009-09-30 3 views
0

я получаю следующее сообщение об ошибке при попытке запустить PHP скрипт, который я написал:PHP использует слишком много памяти

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 56320 bytes) in /home/evergrf2/public_html/ianburris/p/maptile/mapfetcher.php on line 43

Что меня смущает то, что он говорит, что допустимый объем памяти 33554432 байт, и что, когда скрипт попытался выделить 56320 байт пространства, разрешенную память. Как это возможно, когда 56320 меньше, чем 33554432? Возможно, я неправильно истолковал, что это такое ...

ответ

5

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

6

Выделение 56320 вытесняет вас выше лимита. Увеличьте свой лимит в php.ini, если это необходимо. быть более ясным Dont читать, как alocating 56320 больше, чем разрешено 33554432. Вместо читать, как, в то время как выделение 56320, мы превзошли предел 33554432.

Modified: увеличение Dont без должным образом не отладки и убедившись, что есть нет утечки памяти.

+0

Было бы лучше попытаться найти утечку в программе, прежде чем увеличивать лимит в php.ini. –

+0

действительно. изменил ответ :) – Mohammad

2

Я бы также описал сценарий с помощью Xdebug, , чтобы помочь найти возможные утечки памяти.

3

33554432 байт 32 МБ, что не является огромным.

Вы можете увеличить предел памяти PHP (в php.ini найдите строку, которая читает «memory_limit = 32M» и соответствующим образом изменит ее). Обычно я использую 128M для разработки и тяжелого хруста.

Другое решение состоит в том, чтобы профилировать и переписывать код, чтобы использовать меньше памяти.

Смежные вопросы