問題描述
文檔中描述的正常 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:一次加載一行的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!