mysql pdo连接没有关闭?

时间:2018-03-12 13:10:34

标签: php mysql pdo

在我的php脚本中,当我在某些PDO mysql连接上执行查询时,在检查mysql日志时,我无法看到连接被关闭。

Php代码:

<span>

Mysql日志:

T1 = readtable('myfile.xls', 'Sheet',1);
T2 = readtable('myfile.xls', 'Sheet',2);

T = [T1;T2]  % Make a new table T by adding T2 to the end of T1

但是,当我删除查询时,我可以在Mysql日志中看到mysql连接已关闭。

php代码:

?php
$db = new PDO('mysql:host=HOST;dbname=DB',USER,PASSWORD);
$db->exec("SHOW TABLES");
$db = null;
?>

Mysql日志:

180312 18:31:45 9048429 Connect USER@HOST on DB
        9048429 Query   SHOW TABLES

我必须在我的脚本上显式关闭mysql连接以防止太多连接。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

使用上面的代码,Mysql连接成功关闭。只是退出连接没有出现在Mysql日志上。

当我检查Mysql进程列表时,验证连接已成功关闭。

除了上面的问题,如果有使用pdo执行的查询语句,那么pdo语句处理程序对象也需要被销毁,以关闭php-mysql-pdo-connection-not-closing-without-destroying-statement-handler中所述的mysql连接。

答案 1 :(得分:-1)

如文档中所述:“成功连接到数据库后,PDO类的实例将返回到您的脚本。连接在该PDO对象的生命周期内保持活动状态。要关闭连接,您需要销毁通过确保删除对它的所有剩余引用来删除对象 - 通过将NULL赋给保存对象的变量来执行此操作。如果不明确地执行此操作,PHP将在脚本结束时自动关闭连接。“

所以在你的情况下设置$db=null;应该做的诀窍