php - CodeIgniter 事件记录 : Load One Row at a Time

标签 php codeigniter mysqli lazy-loading

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

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

最佳答案

这是您可以做的事情。

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() 方法时它们会执行此操作。

关于php - CodeIgniter 事件记录 : Load One Row at a Time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13826119/

相关文章:

javascript - 为什么 XmlHttpRequest readyState = 2 on 200 HTTP 响应代码

php - CodeIgniter DataMapper ORM v1.8.0 - 如何从多个表中获取记录

php - OpenCart MySQLi 问题

PHP - MySQLi 准备语句 : unknown "max" function (Error 1630)

php - 如何循环$_GET获取所有数据

php - WooCommerce:如何在结帐时更新订单数量

php - 如何使用 Composer 安装 CodeIgniter 核心(系统)文件?

php - 当代码移动到函数时无法连接到数据库

php - 2个用户同时更新mysql表数据

php - 复杂的 SQL 查询 JOIN 和 WHERE