Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3280

Статус
В этой теме нельзя размещать новые ответы.

katrukhin

Местный житель
Регистрация
6 Июн 2010
Сообщения
168
Реакции
22
Ребят расскажите по поводу этой ошибки, это что то связано с php.ini и колл. запросов?
 
Это значит, что скрипт сккушал очень много памяти. 128Mb. Что в большинстве случаев указывает на проблему)
Если же, так оно и задумано, то остается поднять memory_limit в php.ini
 
  • Заблокирован
  • #3
Ошибка "Allowed memory size of X bytes exhausted (tried to allocate Y bytes)" - говорит о том что вашему скрипту не хватает памяти, точнее скрипт не укладывается в тот обьем памяти который разрешен для выполнения PHP скриптами.

В таких случаях обычно помогает изменение настроек, выберите подходящий:

memory_limit = 12M - опция в вашем php.ini файле (рекомендуется если есть доступ, действует на все скрипты на сервере)
ini_set('memory_limit', '12M'); - php-код в начале проблемных скриптов.
php_value memory_limit 12M - опция в .htaccess файле той папки в которой запускается скрипт.

Вместо 12M подставляем необходимый обьем памяти, например по нарастающей, пока ошбка не перестанет вылазить, значение по умолчанию обычно 8M (мегабайт).
 
Значит, не значит... Советчики путают следствие и причину.
Вариантов вываливания ошибки памяти тьма. Неверно сформированный запрос, говёно писанный код... куча вариантов.
Хоть мильон в php.ini укажите...
 
Ребят расскажите по поводу этой ошибки, это что то связано с php.ini и колл. запросов?
С количеством запросов это не связано никак. Валится один конкретный процесс, который обслуживает один конкретный запрос.

php.ini мучить смысла нет, т.к. там и так стоит лимит в 128M, а это довольно много (у хостеров обычно по 32М и всем хватает).

Проблема скорее всего в том, что скрипт читает какой-то файл, а этот файл оказывается слишком большой. То ли логи разрослись, то ли скрипту ресайза картинок подсунули слишком большой джпег, то ли еще что-то.. Но это - самая вероятная причина, ищи с какими файлами твой скрипт работает и смотри сколько они весят.

Если не файл - еще память может забить рекурсия или вечный цикл, но тогда скрипт вообще бы не работал, а у тебя, как я понимаю, раньше работал.

Может из базы вытягиваешь слишком много по mysql_fetch_array() записей подряд и складываешь в общий массив, но это еще более редкий случай. Так что скорее всего дело в файле.
 
Значит, не значит... Советчики путают следствие и причину.
Вариантов вываливания ошибки памяти тьма. Неверно сформированный запрос, говёно писанный код... куча вариантов.
Хоть мильон в php.ini укажите...
Тем не менее, ошибка именно в превышении лимита на используемую память. Как бы вам, возможно, не хотелось обратного)
Кроме того, скажу вам по большому секрету, бывают ситуации, когда для выполнения скрипта действительно требуется более 128Мб памяти. Как правило, для разовых утилит, разумеется)
 
Тем не менее, ошибка именно в превышении лимита на используемую память. Как бы вам, возможно, не хотелось обратного)
Кроме того, скажу вам по большому секрету, бывают ситуации, когда для выполнения скрипта действительно требуется более 128Мб памяти. Как правило, для разовых утилит, разумеется)

Читать научитесь. Следствие и причина! Секретный вы наш. :))
Мне обратного не захочется. Мне пох. :)
 
  • Заблокирован
  • #9
Значит, не значит... Советчики путают следствие и причину.
Вариантов вываливания ошибки памяти тьма. Неверно сформированный запрос, говёно писанный код... куча вариантов.
Хоть мильон в php.ini укажите...
Насчёт говёного кода.. Как вы реализуете вот такую задачку?
Есть файл - размер 2 гигабайта. В нём на каждой строчке написан домен. Нужно проверить каждый на соответствие рег выражению(неважно какому). Если подходит под рег выражение - оставляем домен - не подходит - сносим из файла.
Очень интересно ваше решение.
Спасибо.
 
Насчёт говёного кода.. Как вы реализуете вот такую задачку?
Есть файл - размер 2 гигабайта. В нём на каждой строчке написан домен. Нужно проверить каждый на соответствие рег выражению(неважно какому). Если подходит под рег выражение - оставляем домен - не подходит - сносим из файла.
Очень интересно ваше решение.
Спасибо.
Режем на мелкие файлы, юзаем flush, sleep. Вариантов масса ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху