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.
相关文章