2013-10-09 289 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