Yii CDbCommand запрос большого количества данных и memory

227
02 октября 2017, 00:17

Необходимо выгрести большое кол-во данных из базы данных и положить в Excel так, чтобы по пути не закончилась память.

Сейчас память заканчивается в месте:

$command->query();

Насколько я знаю query() возвращает CDbDataReader, чтобы можно было получать по одной строчке, а не весь массив разом.

Я предполагал, что при таком подходе весь результат запроса не будет храниться в памяти, но она заканчивается.

Есть вариант сделать метод, который будет вытаскивать по 100 записей пока не закончится таблица.

Есть ли вариант обойтись без дополнительных методов, а получать и хранить в памяти по 1 строчке?

Наткнулся на такой вот пост https://stackoverflow.com/questions/6895098/pdo-mysql-memory-consumption-with-large-result-set

Можно ли это сделать с CDbCommand?

Как бы вы решили такую задачу?

Answer 1

Код из документации:

$dataReader=$command->query();
// многократно вызываем read() до возврата методом значения false
while(($row=$dataReader->read())!==false) {  }

http://www.yiiframework.com/doc/guide/1.1/ru/database.dao#sec-4

READ ALSO
Как заполнить двумерный массив нулями и единицами рандомно, чтобы число единиц пользователь вводил с клавиатуры?

Как заполнить двумерный массив нулями и единицами рандомно, чтобы число единиц пользователь вводил с клавиатуры?

Создайте двумерный массив А(N,M)Значения N и M вводит пользователь с клавиатуры

316
работа с API SoundCloud под Android

работа с API SoundCloud под Android

Кто-то знает рабочие пути взаимодейтсвия с SoundCloud при разработке приложения под Android? https://githubcom/soundcloud/java-api-wrapper, как я понял, уже не вариант

288
Java-классы. Объекты и экземпляры [дубликат]

Java-классы. Объекты и экземпляры [дубликат]

На данный вопрос уже ответили:

238
Intelijj Idea getResource problemm

Intelijj Idea getResource problemm

ЗдравстуйтеНе могу записать данные в файл который находится в папке resources

276