PHP использует слишком много памяти - PullRequest
1 голос
/ 30 сентября 2009

При попытке запустить скрипт php я получаю следующую ошибку:

Неустранимая ошибка: допустимый объем памяти 33554432 байт исчерпано (пытался выделить 56320 байт) в /home/evergrf2/public_html/ianburris/p/maptile/mapfetcher.php по линии 43

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

Ответы [ 4 ]

6 голосов
/ 30 сентября 2009

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

6 голосов
/ 30 сентября 2009

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

Изменено: не увеличивать без правильной отладки и проверки отсутствия утечек памяти.

3 голосов
/ 01 октября 2009

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

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

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

2 голосов
/ 30 сентября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...