Php mysql pdo连接未关闭?

Php mysql pdo连接未关闭?,php,mysql,pdo,Php,Mysql,Pdo,在我的php脚本中,当我在某些PDO 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 Qu

在我的php脚本中,当我在某些PDO 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日志上看到mysql连接已关闭

php代码:

?php
$db = new PDO('mysql:host=HOST;dbname=DB',USER,PASSWORD);
$db = null;
?>
Mysql日志:

180312 18:33:54 9048515 Connect USER@HOST on DB
        9048515 Quit    

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

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


因此,在您的案例设置中,
$db=null;
应该可以做到这一点。

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

当我检查Mysql processlist时,验证连接已成功关闭


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

我认为连接没有关闭,因为您有未蚀刻的数据。我认为您还需要关闭结果集。但是,您当前的代码没有关闭创建一个结果集。'$results=$db->exec(“SHOW TABLES”);'然后'$results=null;'然后'$db=null;'阅读文档中的注释可能非常有用: