PHP Codeigniter Oracle не хватает памяти - PullRequest
0 голосов
/ 10 декабря 2011

У меня проблема. Когда я перебираю кучу SQL-запросов на основе года и месяца и я получаю попадание в таблицу, использование памяти взрывается !!!!

Я использую php 5.1, Oracle 10.1, Codeigniter 2.02 на коробке Centos.

Вот некоторые выходные данные журнала, содержащие использование памяти:

INFO - 2011-12-09 16:10:26 -> LOOP: NF: 28 ГОД: МЕСЯЦ 2010: набор записей «01»: 1788664

INFO - 2011-12-09 16:10:27 -> СЧЕТ РЕЗУЛЬТАТОВ: 0

INFO - 2011-12-09 16:10:27 -> LOOP: NF: 28 ГОД: МЕСЯЦ 2010: набор записей «02»: 1793128

INFO - 2011-12-09 16:10:28 -> СЧЕТ РЕЗУЛЬТАТОВ: 0

INFO - 2011-12-09 16:10:28 -> LOOP: NF: 28 ГОД: МЕСЯЦ 2010: набор записей '03': 1793728

INFO - 2011-12-09 16:10:30 -> РАСЧЕТ РЕЗУЛЬТАТА: 0

INFO - 2011-12-09 16:10:30 -> LOOP: NF: 28 ГОД: МЕСЯЦ 2010: набор записей «04»: 1794328

INFO - 2011-12-09 16:10:32 -> СЧЕТ РЕЗУЛЬТАТА: 0

INFO - 2011-12-09 16:10:32 -> LOOP: NF: 28 ГОД: МЕСЯЦ 2010: набор записей '05': 1794928

INFO - 2011-12-09 16:10:33 -> СЧЕТ РЕЗУЛЬТАТОВ: 0

INFO - 2011-12-09 16:10:33 -> LOOP: NF: 28 ГОД: МЕСЯЦ 2010: набор записей «06»: 1795528

INFO - 2011-12-09 16:10:35 -> СЧЕТ РЕЗУЛЬТАТОВ: 0

INFO - 2011-12-09 16:10:35 -> LOOP: NF: 28 ГОД: МЕСЯЦ 2010: набор записей «07»: 1796128

INFO - 2011-12-09 16:10:37 -> СЧЕТ РЕЗУЛЬТАТА: 0

INFO - 2011-12-09 16:10:37 -> LOOP: NF: 28 ГОД: МЕСЯЦ 2010: набор записей '08': 1796728

INFO - 2011-12-09 16:10:38 -> СЧЕТ РЕЗУЛЬТАТА: 0

INFO - 2011-12-09 16:10:38 -> LOOP: NF: 28 ГОД: МЕСЯЦ 2010: набор записей «09»: 1797392

INFO - 2011-12-09 16:10:45 -> СЧЕТ РЕЗУЛЬТАТА: 224162

INFO - 2011-12-09 16:10:45 -> LOOP: NF: 28 ГОД: 2010 МЕСЯЦ: набор 10 минут: 486504280

NF = количество полей

Так, если строка данных в таблице имеет общий объем 1000 байт (на самом деле это намного меньше) и у меня 224162 записей, тогда 224162 * 1000 = 224 мегабайта памяти. Давайте добавим немного для накладных расходов.

Я не должен получить удвоенный объем используемой памяти !!!

У меня установлена ​​максимальная память 512M. Но это не проблема. Проблема заключается в использовании памяти.

Я делаю это с результатами запроса:

foreach($query->result_array() as $row)

Что я делаю не так?

Как я могу это исправить?

1 Ответ

0 голосов
/ 13 декабря 2011

Я отвечаю на свой вопрос. Кажется, что класс базы данных codeigniter делает странные вещи. Я не знаю точно, что. Похоже, это тащит полный результат в памяти.

Мое решение:

Мне удалось заставить вещи работать, выбросив весь класс базы данных codeigniter. код и перепрограммирование рассматриваемой модели с Код PHP OCI8. Память никогда не превышала 1,6 мегабайта.

Вздох ...

С уважением,

Phil

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