首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql pdo连接没有关闭吗?

问mysql pdo连接没有关闭吗?
EN

Stack Overflow用户
提问于 2018-03-12 21:10:34
回答 2查看 578关注 0票数 1

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

Php代码:

代码语言:javascript
复制
?php
$db = new PDO('mysql:host=HOST;dbname=DB',USER,PASSWORD);
$db->exec("SHOW TABLES");
$db = null;
?>

Mysql日志:

代码语言:javascript
复制
180312 18:31:45 9048429 Connect USER@HOST on DB
        9048429 Query   SHOW TABLES

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

php代码:

代码语言:javascript
复制
?php
$db = new PDO('mysql:host=HOST;dbname=DB',USER,PASSWORD);
$db = null;
?>

Mysql日志:

代码语言:javascript
复制
180312 18:33:54 9048515 Connect USER@HOST on DB
        9048515 Quit    

我必须在我的脚本上显式关闭mysql连接,以防止过多的连接。我怎样才能做到这一点呢?

EN

回答 2

Stack Overflow用户

发布于 2018-03-13 19:05:51

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

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

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

票数 0
EN

Stack Overflow用户

发布于 2018-03-12 21:29:08

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

因此,在您的情况下,设置$db=null;应该可以完成此任务

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49236104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档