2013-07-30 3 views
-1

У меня есть большой объем данных, который обрабатывается с использованием CLI.Почему потребление памяти становится все больше и больше в цикле foreach?

В режиме просмотра данные проходят цикл foreach.

Но на каждой итерации потребление памяти становится все больше и больше.

Почему это происходит? Каждый var получает переназначение в цикле, поэтому не должно быть утечек памяти. Хотя я пытался установить значение var null в конце каждой итерации, это не помогло.

В цикле я использую объекты (ActiveRecord) и работаю с БД.

В начале скрипт работает очень быстро (около 10 итераций в секунду), к концу его производительность меньше 1 итерации в секунду.

Спасибо.

+3

Нельзя ожидать, что вы скажете, почему ваш код увеличивает использование памяти, если мы не видим код. – Jim

+0

Мы понимаем, что мы должны понять это, не видя ни одной строки кода? – Barmar

+0

Одной из возможностей является BUG в PHP или в вашем цикле. Не могли бы вы опубликовать какой-то код, чтобы проверить его на наличие проблем? –

ответ

1

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

+0

Благодарим вас за ответ, но даже после 1000-й итерационной памяти потребление памяти только увеличивается. – serg66

+0

Это может быть ошибка в PHP, пожалуйста, прочитайте этот документ о сборке мусора. Я помню, что в старых версиях PHP возникла проблема с этим, я не уверен, что он уже исправлен. – lupatus