带有MY_Model的free_result()

时间:2013-07-18 09:03:03

标签: php mysql codeigniter

我在我正在尝试创建的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();
    }

1 个答案:

答案 0 :(得分:1)

在控制器中使用结果之前,无法使用结果释放内存。可能的结果不是按值返回,而是返回指针/引用,因此结果在页面呈现之前一直在内存中的相同位置。

使用free_result()可以在结果用于控制器之前销毁结果。

顺便说一句:结果也可能作为指针/引用发送到View,因此如果在呈现页面之前在控制器中销毁结果,则可能会发生没有结果的页面。