0

I have a get dunction inside a MY_Model I'm trying to create, which returns either a single record or all records. What I'd like to do is when I get the result(s) to ALWAYS free some memory with free_result(), but if i put it in the line i return the result, I got nothing. Any suggestions please?

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();
    }
4

1 回答 1

1

在控制器中使用结果之前,您不能使用结果释放内存。结果可能不是按值返回,而是按指针/引用返回,因此结果一直在内存中的同一个位置,直到页面被渲染。

使用free_result()您在控制器中使用结果之前破坏结果。

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

于 2013-07-18T09:53:31.897 回答