簡體   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