Это, кажется, было обсуждено совсем немного. Я пробовал несколько вещей, которые я нашел, но не повезло.PHP - проблемы с памятью кометы
У меня есть «хакерский» кеш, который хранит объекты, полученные из вызовов XML. Похоже, что вызовы XML слишком длились при загрузке страниц, поэтому пользователь может нажать кнопку в администраторе, чтобы перестроить кеш. Процедура кэширования продолжает умирать с ошибкой выделения памяти.
Я знаю, что это очень неопределенный вопрос, но я не уверен, что это поможет также опубликовать большой раздел кода.
Я «отключаю» каждую переменную после того, как закончу ее использование. Я вызываю gc_collect_cycles(), который, похоже, ничего не делает.
У меня есть две анонимные функции, которые вызываются через более .... могли ли они быть виновниками?
Что я должен был искать? Помогло бы вам вообще спать()?
код Редактировать
Вот код: http://pastebin.com/8M1Dk73E
В строке 79 кода Pastebin, я звоню gc_collect_cycles. Не уверен, что это хорошее место, чтобы поместить это или нет.
Я использую петли foreach вместо циклов, которые, как я знаю, имеют огромное значение с копируемыми объектами, но я думаю, что если я отключу переменные, он должен работать одинаково, даже если время выполнения больше.
Ну, я в недоумении, поэтому любые мысли были бы полезными.
Несколько вопросов: Сколько памяти выделено для PHP? Не удалось распечатать сообщение об ошибке? Если вы запустили его десять раз, изменяя порядок, в котором элементы извлекаются, обычно ли он заканчивается на том же номере строки (знак того, что это может быть код, ответственный за большой захват памяти)? Это может реально помочь увидеть этот большой кусок кода :) –
выделено 128 МБ, ошибка: «Неустранимая ошибка: Разрешенная память размером 134217728 байт, израсходованная (пыталась выделить 5426168 байт) в ...» Она фактически умирает в той же строке каждый раз, что я с удовольствием признаю, связано с кодом ... Я просто не знаю, что еще делать, освобождая память. Это не то, о чем я могу сказать, о, мы просто увеличим размер памяти и назовут это днем ... потому что размер извлекаемых данных может быть массовым для некоторых людей. –