我正在研究CodeIgniter的子查詢庫(link to project),它通過返回可以使用的數據庫對象而不是正常的$this->db
對象來工作。克隆CodeIgniter的數據庫對象
本來,我是在製造新的數據庫每次對象:
$this->CI =& get_instance();
$db = $this->CI->load->database('', true);
但後來我意識到(或者更確切地說,有人向我指出的),這將使每一次新的數據庫連接!所以我決定嘗試clone
而不是製作新的物體。
我更新的代碼看起來像這樣(link to full code):
class Subquery{
var $CI, $db;
function __construct(){
$this->CI =& get_instance();
$this->db = $this->CI->db; // Default database connection
}
function start_subquery(){
$newDatabase = clone $this->db;
// some more code
return $newDatabase;
}
}
我進行了測試,它似乎工作,但我不知道這是否解決了問題。使用clone
是否會建立新的數據庫連接,還是在內部使用引用並僅保留一個連接?
除非'__clone()'在' - > db'中實現,否則它將使用相同的db連接資源afaik。通過設置和檢索某些用戶定義的變量(不打算下載CI來測試:P),可以輕鬆進行測試 – Wrikken
@Wrikken:酷!我看過,它似乎沒有'__clone'方法。那很好。我只想要一個連接:-) –