Как избежать исчерпания памяти PHP? - PullRequest
3 голосов
/ 10 ноября 2009

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 10 ноября 2009

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

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

memory_limit = 64M

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

1 голос
/ 10 ноября 2009

бла бла, память_лимит. Похоже, что все избили меня до этого.

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

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

0 голосов
/ 10 ноября 2009

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

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

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

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

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