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

Тема в разделе "PHP", создана пользователем katrukhin, 10 авг 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. katrukhin

    katrukhin

    Регистр.:
    6 июн 2010
    Сообщения:
    168
    Симпатии:
    22
    Ребят расскажите по поводу этой ошибки, это что то связано с php.ini и колл. запросов?
     
  2. McLay

    McLay Постоялец

    Регистр.:
    20 май 2008
    Сообщения:
    70
    Симпатии:
    15
    Это значит, что скрипт сккушал очень много памяти. 128Mb. Что в большинстве случаев указывает на проблему)
    Если же, так оно и задумано, то остается поднять memory_limit в php.ini
     
    katrukhin нравится это.
  3. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    Ошибка "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 (мегабайт).
     
  4. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.757
    Симпатии:
    5.758
    Значит, не значит... Советчики путают следствие и причину.
    Вариантов вываливания ошибки памяти тьма. Неверно сформированный запрос, говёно писанный код... куча вариантов.
    Хоть мильон в php.ini укажите...
     
  5. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    С количеством запросов это не связано никак. Валится один конкретный процесс, который обслуживает один конкретный запрос.

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

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

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

    Может из базы вытягиваешь слишком много по mysql_fetch_array() записей подряд и складываешь в общий массив, но это еще более редкий случай. Так что скорее всего дело в файле.
     
  6. McLay

    McLay Постоялец

    Регистр.:
    20 май 2008
    Сообщения:
    70
    Симпатии:
    15
    Тем не менее, ошибка именно в превышении лимита на используемую память. Как бы вам, возможно, не хотелось обратного)
    Кроме того, скажу вам по большому секрету, бывают ситуации, когда для выполнения скрипта действительно требуется более 128Мб памяти. Как правило, для разовых утилит, разумеется)
     
  7. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    исходник скрипта в студию
     
  8. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.757
    Симпатии:
    5.758
    Читать научитесь. Следствие и причина! Секретный вы наш. :))
    Мне обратного не захочется. Мне пох. :)
     
  9. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    Насчёт говёного кода.. Как вы реализуете вот такую задачку?
    Есть файл - размер 2 гигабайта. В нём на каждой строчке написан домен. Нужно проверить каждый на соответствие рег выражению(неважно какому). Если подходит под рег выражение - оставляем домен - не подходит - сносим из файла.
    Очень интересно ваше решение.
    Спасибо.
     
  10. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Режем на мелкие файлы, юзаем flush, sleep. Вариантов масса ;)
     
Статус темы:
Закрыта.