繁体   English   中英

CodeIgniter-内存中的result_array

[英]CodeIgniter - result_array in memory

我不知道这是否是一个有效的编程问题。 但是我对CodeIgniter感到有些困扰。 希望你们有多年的经验和智慧可以指导我。

这是我的故事,

我正在为项目使用CodeIgniter和MS SQL。 我正在检索超过2000万行的销售数据。 现在,我设法通过创建聚合数据并将其存储在表中来减少结果。 仍然出现内存不足错误。

现在,我在想,CodeIgniter的result_array()函数是否将所有结果存储到内存中? 这个假设对吗?

如果是,我可以分块加载吗? 假设我在内存中加载了前100行,然后删除了这100行,然后又加载了100行? 因此,PHP不会用结果填充我的记忆。

顺便说一句,我已经使用寻呼机获取详细数据。 有一个特定目的需要这个问题。 我想显示一份总结报告。 我正在使用jQwidgets透视网格

我不知道这是否有意义。 但这就是我的想法。 我想了解发生了什么事。 或者,也许您可​​以建议我可以采用哪些其他选项或设计来处理PHP中的大数据。

希望我能清楚地解释自己。 非常感谢你。 非常感谢您的所有建议。

我相信您正在寻找鲜为人知的unbuffered_row函数:

$query = $this->db->query("YOUR QUERY");

while ($row = $query->unbuffered_row())
{
        echo $row->title;
        echo $row->name;
        echo $row->body;
}

此方法返回单个结果行,而不像row()那样预取整个结果在内存中。 如果查询有多行,它将返回当前行并将内部数据指针向前移动。

https://www.codeigniter.com/userguide3/database/results.html

您还可以获得一个数组:

$query->unbuffered_row('array');        // associative array

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM