在我的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连接以防止太多连接。我怎么能这样做?
答案 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;
应该做的诀窍