Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter-内存中的结果数组_Php_Codeigniter - Fatal编程技术网

Php CodeIgniter-内存中的结果数组

Php CodeIgniter-内存中的结果数组,php,codeigniter,Php,Codeigniter,我不知道这是否是一个有效的编程问题。但是,关于CodeIgniter,有一些东西让我心烦意乱。希望你们这些有多年经验和智慧的人能指导我 这是我的故事 我正在为一个项目使用CodeIgniter和MS SQL。我正在检索超过2000万行的销售数据。现在,我通过创建聚合数据并存储在表中来减少结果。我仍然得到了内存不足的错误 现在,我在想,CodeIgniter的result_array()函数是否将所有结果存储到内存中?我的假设正确吗 如果是,我可以分块加载它吗?假设我加载内存中前100行,然后删除

我不知道这是否是一个有效的编程问题。但是,关于CodeIgniter,有一些东西让我心烦意乱。希望你们这些有多年经验和智慧的人能指导我

这是我的故事

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

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

如果是,我可以分块加载它吗?假设我加载内存中前100行,然后删除这100行,然后再加载另外100行?所以PHP不会用结果填充我的内存

顺便说一下,我已经使用寻呼机来获取详细数据了。这个问题是有特定目的的。我想展示一份总结报告。我正在使用

我不知道这是否有道理。但这正是我所想的。我想知道发生了什么。或者,您可以建议我可以使用PHP处理大数据的其他选项或设计


希望我解释清楚。非常感谢。谢谢你的建议

我相信您正在寻找鲜为人知的
无缓冲行
功能:

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

while ($row = $query->unbuffered_row())
{
        echo $row->title;
        echo $row->name;
        echo $row->body;
}
此方法返回单个结果行,而不预取整个结果行 与row()一样在内存中生成结果。如果查询包含多行, 它返回当前行并向前移动内部数据指针

您还可以获得一个数组:

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

我相信您正在寻找鲜为人知的
无缓冲行
功能:

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

while ($row = $query->unbuffered_row())
{
        echo $row->title;
        echo $row->name;
        echo $row->body;
}
此方法返回单个结果行,而不预取整个结果行 与row()一样在内存中生成结果。如果查询包含多行, 它返回当前行并向前移动内部数据指针

您还可以获得一个数组:

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

嗨@Alex,谢谢你的回复。我会看一看,并试图使它在我的项目工作。一旦我有了发现,我会及时更新。非常感谢。嗨@Alex,谢谢你的回复。我会看一看,并试图使它在我的项目工作。一旦我有了发现,我会及时更新。非常感谢。