在我的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连接,以防止过多的连接。我怎样才能做到这一点呢?
发布于 2018-03-13 19:05:51
使用上面的代码,Mysql连接将成功关闭。只是退出连接没有出现在Mysql日志中。
当我检查Mysql进程列表时,它验证了连接正在成功关闭。
除了上述问题外,如果有查询语句需要使用pdo执行,则也需要销毁pdo语句处理程序对象,以关闭php-mysql-pdo-connection-not-closing-without-destroying-statement-handler中所述的mysql连接。
发布于 2018-03-12 21:29:08
正如文档中所述:“成功连接到数据库后,PDO类的一个实例将返回到您的脚本。该连接在该PDO对象的生存期内保持活动状态。要关闭该连接,您需要通过确保删除对该对象的所有剩余引用来销毁该对象-您可以通过将NULL赋值给保存该对象的变量来完成此操作。如果您不显式执行此操作,PHP将在脚本结束时自动关闭该连接。”
因此,在您的情况下,设置$db=null;应该可以完成此任务
https://stackoverflow.com/questions/49236104
复制相似问题