沃梦达 / 编程问答 / php问题 / 正文

CodeIgniter Active Record:一次加载一行

CodeIgniter Active Record: Load One Row at a Time(CodeIgniter Active Record:一次加载一行)

本文介绍了CodeIgniter Active Record:一次加载一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

文档中描述的正常 result() 方法似乎会立即加载所有记录.我的应用程序需要加载大约 30,000 行,一次加载一个,将它们提交给第三方搜索索引 API.显然,一次将所有内容加载到内存中效果不佳(由于内存过多而出错).

The normal result() method described in the documentation appears to load all records immediately. My application needs to load about 30,000 rows, and one at a time, submit them to a third-party search index API. Obviously loading everything into memory at once doesn't work well (errors out because of too much memory).

所以我的问题是,我怎样才能达到传统 MySQLi API 方法的效果,在这种方法中,您在循环中一次加载一行?

So my question is, how can I achieve the effect of the conventional MySQLi API method, in which you load one row at a time in a loop?

推荐答案

这是您可以做的事情.

while ($row = $result->_fetch_object()) {
  $data = array(
    'id'         => $row->id
    'some_value' => $row->some_field_name
  );
  // send row data to whatever api
  $this->send_data_to_api($data);
}

这将在一次获得一行.查看 CodeIgniter 源代码,你会看到他们会在你执行 result() 方法时这样做.

This will get one row at the time. Check the CodeIgniter source code, and you will see that they will do this when you execute the result() method.

这篇关于CodeIgniter Active Record:一次加载一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:CodeIgniter Active Record:一次加载一行