2012-07-29 78 views
4

我是不是自動加載數據庫,因爲我的應用程序的大多數頁面不需要需要數據庫處理,否則整個事情會減慢。我想要做的不是建立一個新的連接到分貝,當有一個已經活着,並使用它,而不是打擾服務器數據庫。那麼我如何在下面的示例中實現$this->db->reconnect();?我閱讀用戶指南,但沒有確切的例子。

注:如果我需要使用$this->db->close();$this->db->initialize();,請您幫助我實現它們,以及因爲聽說調用$this->db->reconnect();禁用將拋出一個錯誤自動加載。

我使用CI 2.1

感謝

class Test_model extends CI_Model 
{ 
public function __construct() 
{ 
    parent::__construct(); 

    $this->load->database(); 
} 

public function function_a($id) 
{ 
    $this->db->protect_identifiers('year'); 

    $sql = "SELECT * FROM year WHERE id = ?"; 

    $data['dbquery'] = $this->db->query($sql, array($id)); 

    return $data['dbquery']; 
} 

public function function_b($id) 
{ 
    $this->db->protect_identifiers('month'); 

    $sql = "SELECT * FROM month WHERE id = ?"; 

    $data['dbquery'] = $this->db->query($sql, array($id)); 

    return $data['dbquery']; 
} 


public function function_c($id)... 
public function function_d($id)... 
public function function_e($id)... 
} 

回答

7

基本上在database.php中,那麼連接將在每個腳本執行結束時自動關閉,默認情況下它將設置爲false

好吧,如果你想,那麼你可以在每次執行查詢後使用

$this->db->close(); 

手動關閉連接並使用

$this->db->initialize(); 

任何查詢執行之前將其關閉後重新初始化連接。

+0

當我用'$ this-> load-> database();'在構造函數中連接db時,使用'$ this-> db-> initialize();''有什麼意義?我的意思是,它有什麼特別之處?的優點和缺點?我無法在網上找到任何有關它的信息。 – BentCoder 2012-07-29 15:33:00

+0

如果您使用'autoinit = false'和'pconnect = false'並且使用'$ this-> db-> close();'。 – 2012-07-29 15:36:11

+1

理解,所以沒有點使用close()和initialize(),因爲'pconnect'被設置爲** false **默認情況下在我的情況。謝謝 – BentCoder 2012-07-29 19:59:36

2

做它只是關閉連接和手動重新最好的方法:如果你保持pconnect=false

$this->db->close(); 
$this->db->initialize(); 
+0

我在上面的示例中將這4行放在哪裏? – BentCoder 2012-07-29 15:07:19

+0

對不起,只有2線添加 – 2012-07-29 15:34:48