首页后端开发PHPPHP中PDO如何关闭数据的连接?怎样操作?

PHP中PDO如何关闭数据的连接?怎样操作?

时间2024-03-26 17:12:03发布访客分类PHP浏览1476
导读:这篇文章给大家分享的是PHP中PDO关闭数据连接的操作,在手写 mysql 的连接操作时,一般都会使用 mysql_close( 来进行关闭数据库连接,下面我们就来看看PDO 是如何关闭数据的连接的? 官方说明 要想关闭连接,需要销毁对...

这篇文章给大家分享的是PHP中PDO关闭数据连接的操作,在手写 mysql 的连接操作时,一般都会使用 mysql_close() 来进行关闭数据库连接,下面我们就来看看PDO 是如何关闭数据的连接的?

官方说明

要想关闭连接,需要销毁对象以确保所有剩余到它的引用都被删除,可以赋一个 NULL 值给对象变量。如果不明确地这么做,PHP 在脚本结束时会自动关闭连接。

$pdo = new PDO('mysql:host=127.0.0.1;
    port=3306;
    dbname=blog_test', 'root', '');
    
$pdo = null;
    

官方文档中说得很明白,那就是给 PDO 对象赋值为 NULL 即可。但是事情真的有那么简单吗?

实际测试

我们来这样进行一下测试,正常情况下,我们打开数据库连接后都不会直接就关闭,而是要进行一些操作。

$pdo = new PDO('mysql:host=127.0.0.1;
    port=3306;
    dbname=blog_test', 'root', '');
    
 
$stmt = $pdo->
    prepare('SELECT * FROM zyblog_test_user');
    
$stmt->
    execute();
    
 
$pdo = null;
    
sleep(60);
    

运行上述代码后,我们在数据库使用 show full processlist; 查看连接进程,会发现当前的连接并没有马上关闭,而是等到 60 秒之后,也就是页面执行完成之后才会关闭。似乎 $pdo = null; 这句并没有执行成功。

其实,在官方文档中已经说明了这个情况,只是大家可能不太会注意。【需要销毁对象以确保所有剩余到它的引用都被删除】,在上面的代码中,\$stmt 预编译 SQL 语句的功能调用的是 $pdo 对象中的方法,它们之间产生了引用依赖的关系,这样的情况下,直接给 $pdo = null; 是没有效果的,我们需要将 $stmt 也赋值为 null 。

$pdo = new PDO('mysql:host=127.0.0.1;
    port=3306;
    dbname=blog_test', 'root', '');
    
 
$stmt = $pdo->
    prepare('SELECT * FROM zyblog_test_user');
    
$stmt->
    execute();
    
 
$stmt = null;
    
$pdo = null;
    
sleep(60);
    

mysqli测试

那么使用 mysqli 的默认扩展组件,也就是使用 mysqli 对象中的 close() 来关闭数据库连接会有这个问题吗?还是直接用代码来测试测试。( mysql 扩展已经过时不推荐使用了,大家如果要自己封装数据库操作类或者写小 Demo 的话还是要用 mysqli 更好一些 )

$conn = new mysqli('127.0.0.1', 'root', '', 'blog_test');
    
 
$result = $conn->
    query('SELECT * FROM zyblog_test_user');
    
$stmt = $conn->
    prepare("SELECT * FROM zyblog_test_user");
    
$stmt->
    execute();
    
 
$conn->
    close();
    
 
sleep(60);
    

在运行上述代码后,我们在数据库中查看连接进程就不会看到还在执行的连接的,也就是说在 mysqli 中调用 close() 方法是能够直接马上关闭掉数据库的连接的。

总结

关于PHP中PDO关闭数据连接的操作就介绍到这,上述示例有一定的借鉴价值,感兴趣的朋友可以参考。最后,想要了解更多关闭数据库连接的方法和操作,大家可以关注其它的相关文章。

文本转载自脚本之家

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

PHP

若转载请注明出处: PHP中PDO如何关闭数据的连接?怎样操作?
本文地址: https://pptw.com/jishu/653641.html
Go语言中字符串拼接方法是什么呢? HTML5中使用SVG可以做什么,详细示例是怎样的

游客 回复需填写必要信息