2013-10-09 189 views
0

我在網上創建了一個我需要的類。此類在其生命週期中與本地MySql數據庫打開連接。關閉數據庫連接

在我的代碼這個類實例的範圍是局部的,這樣的例子

function doSomething(){ 
    $class = new MyClass(); 
    // ... do something with $class 
} 

doSomething(); 

所以每次函數結束對象時被銷燬。但我認爲數據庫連接永遠不會停止,因爲經過一定次數的調用doSomething類出現錯誤'無法連接到數據庫'。

眼看類的析構函數對其執行的唯一操作

unset($this); 

是否取消設置($這個)也接近數據庫連接?關閉它的最好方法是什麼?

感謝

回答

0
public function __destruct() 
{ 
unset($objname); 
session_destroy(); 
} 
0

PHP關門的要求Using mysql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.

末MySQL連接如果您在腳本執行期間運行DoSomething的幾次 - 你可以添加mysql_close進入析構函數

此外,您還可以使用持久性連接(mysql_pconnect),這會帶來更好的性能

就注意到 - 它能夠更好地使用mysqli擴展

+0

我使用第三方類,在析構函數只有一條指令:未設置($這個);所以這意味着MySQL鏈接(我不知道它是如何打開的,是在課堂內)是不是很接近? – user2540463

+0

至少看起來如此,嘗試查看通過所有文件找到任何「連接(」子字符串 - 通常它是連接的地方進行 –

0

我只是寫了下面的,希望它有助於:

class db { 
    public function __construct() { 
     $this->conn = mysqli_connection('localhost','user','pass','dbname'); 
    } 

    public function mysql_q($sql) { 
     $result = mysqli_query($this->conn,$sql); 
     return ($result) ? true : false; 
    } 

    public function __destruct() { 
     mysqli_close($this->conn); 
    } 
} 

$db = new db(); // auto call __construct to connect db 
echo ($db->mysql_q($sql)) ? "Successful!" : "Failed!"; 
unset($db); // auto call __destruct to close connection