在PHP中关闭MySQL连接

时间:2012-08-04 11:58:30

标签: php mysql

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

此致 乔伊

5 个答案:

答案 0 :(得分:2)

通常不需要使用mysql_close(),因为非持久性开放链接会在脚本执行结束时自动关闭,但也要记得在资源被拒绝后立即终止资源更长的要求总是一个好习惯。如果您的脚本长时间运行而不再需要资源,则不再需要让您更接近资源耗尽

答案 1 :(得分:2)

PHP无论如何都会在脚本末尾释放所有资源。

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

如果您在开始时使用SQL几秒钟时使用相同的推理,那么只对提取的数据进行处理 - 通过关闭连接,您将允许另一个连接取代您的位置(MySQL有多少限制同时使用可以建立联系。)

另一方面,如果你在脚本结束时释放它,因为你在脚本的整个执行过程中使用了DB(间歇性地),那么你只需要在脚本结束时做PHP所做的事情。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

  

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

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

例如参见本文。

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

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

答案 4 :(得分:0)

$ conn =新的mysqli(“ localhost”,“用户名”,“密码”,“ 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();