2009-11-10 2 views
3

Фатальная ошибка: Разрешены памяти размером 33554432 байт исчерпаны (пытались выделить 136753 байт) в /home/alien/Desktop/1/scanner.php на линии 166Как избежать истощения памяти PHP?

это 166 строка кода PHP:

$text[$i] = curl_multi_getcontent ($curl[$i]); 

здесь какой-нибудь способ обойти эту проблему путем опорожнения памяти или что-то, извините, я не программист

ответ

3

Похоже, ваш сервер настроен на 32 МБ памяти, выделенной для PHP. Не зная больше о вашем приложении, это звучит как разумная сумма, но, безусловно, есть приложения, для которых требуется больше.

В файле php.ini, вы можете увеличить объем памяти, например, так:

memory_limit = 64M 

Обратите внимание, что последовательно увеличивая объем памяти, выделенной для приложения часто признаком более серьезной проблемой. Возможно, вы также захотите, чтобы разработчик просмотрел код для любых данных, которые не были должным образом очищены.

0

Вы можете увеличить объем памяти, доступной для каждого отдельного запроса PHP через php.ini. Подробности см. На странице documentation of memory_limit.

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

0

В PHP нет функции free_ram(). Вы можете сделать несколько вариантов:

  • Увеличьте ограничение на доступ к памяти, доступное для php. В вашем файле php.ini увеличьте memory_limit
  • unset() переменные и скрестите пальцы. PHP запускает сборщик мусора, поскольку он считает нужным, и его трудно измерить.
1

Blah blah, memory_limit. Похоже, что все избили меня до этого.

Обратите внимание на то, что предел памяти по умолчанию для php обычно равен 8 или 16 Мб, и вы используете 32 ... Кто-то уже сделал шаг по увеличению лимита для вас и с каждым увеличением, вы снижаете общую производительность вашего сайта ... Более высокий лимит означает меньшее количество экземпляров, более высокие накладные расходы, более возможные ошибки.

Я думаю, вам нужно посмотреть, что это такое, что съедает весь этот баран. Не принимать клише, но 32mb должно быть достаточно для всех, и если вы просто продолжаете увеличивать лимит, вы нарисуете себя в действительно уродливый угол.