繁体   English   中英

在PHP中关闭MySQL连接

[英]Closing a MySQL connection in PHP

我只是想知道,在页面末尾用PHP关闭MySQL连接是否合适? 有什么好处? 关闭它是否重要?

真诚的,乔伊

通常不需要使用mysql_close(),因为非持久性打开链接会在脚本执行结束时自动关闭,但是还要记住,一旦不再需要资源就终止这些资源始终是一种好习惯。 如果您的脚本长时间运行而不再需要资源,则不再需要让您更接近资源耗尽

无论如何,PHP将在脚本的末尾释放任何资源。

最好是释放文件资源并锁定文件,例如,因为您的脚本可能以1s的形式运行,但在脚本的最开始可能只需要几毫秒的文件。

使用相同的推理,如果你在开始时使用SQL几毫秒,那么只对提取的数据进行处理 - 通过关闭你的连接,你允许另一个连接代替你的位置(有两个同时连接的MySQL限制)制作)。

另一方面,如果你在脚本的末尾释放它,因为你在脚本的整个执行期间(间歇地)使用数据库,那么你只是在脚本结束时做PHP将要做的事情。

是的,最好在使用后关闭连接,这样可以减轻数据库的负担。性能会提高。 应该始终在使用后释放资源,以便其他用户可以使用它们。

如果你的意思是使用持久连接:一般来说(99.99%的时间)使用持久连接是非常明智的(!)。 当然不是在使用交易时。 每个请求打开和关闭连接的性能损失并不大。

PHP持久连接很糟糕,因为......

  • 它们导致MySQL中的事务,表锁,临时表,会话变量和大多数其他有用的功能非常危险,可能会在页面生成过程中导致服务器范围内的死锁和数据库错误。
  • 它们占用了数百个MySQL套接字和线程,增加了在某个地方达到限制的风险(打开文件,mysql设置,内核限制?)。
  • 当由于持久连接而导致某些事情中断时,诊断肯定非常困难,因为它只会在某个线程按特定顺序提供某些请求后才会显示。
  • 对于一个Web服务器池,一个慢速Web服务器可以备份并消耗这么多连接,它无法使用其他服务器无法创建连接来完成其请求。

例如,请参阅本文。

http://meta.wikimedia.org/wiki/Why_persistent_connections_are_bad

一般来说,尽快显式释放您获得的所有资源也是一种很好的编程习惯,因为它们可以被竞争的例程脚本使用。 使用构造函数和析构函数(“智能资源”)是一种很好的方法。 在PHP中,您的脚本可能会以致命错误结束,在这种情况下您将无法自行释放它们。

$ conn = new mysqli(“localhost”,“Username”,“Password”,“Db_name”);

$sql = "SELECT * FROM `your_table_name`";

$connStatus = $conn->query($sql);

$numberOfRows = mysqli_num_rows($connStatus);

$numberOfRows; 

//this echo out the total number of rows returned from the query

$conn->close();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM