我在我正在尝试创建的MY_Model中有一个结合点,它返回单个记录或所有记录。我想做的是当我得到结果总是释放一些内存与free_result(),但如果我把它放在行中我返回结果,我什么也没得到。有什么建议吗?
public function get($id = NULL, $single = FALSE){
if ($id != NULL) {
$filter = $this->_primary_filter; // filter the id
$id = $filter($id); // e.g. intval($id)
$this->db->where($this->_primary_key, $id);
$method = 'row'; // single record
} elseif ($single === TRUE) {
$method = 'row'; // single record
} else {
$method = 'result'; // all records
}
return $this->db->get($this->_table_name)->$method();
}
答案 0 :(得分:1)
在控制器中使用结果之前,无法使用结果释放内存。可能的结果不是按值返回,而是返回指针/引用,因此结果在页面呈现之前一直在内存中的相同位置。
使用free_result()
可以在结果用于控制器之前销毁结果。
顺便说一句:结果也可能作为指针/引用发送到View,因此如果在呈现页面之前在控制器中销毁结果,则可能会发生没有结果的页面。