【问题标题】:What happens if MySQL connections continually aren't closed on PHP pages?如果 MySQL 连接在 PHP 页面上一直没有关闭会发生什么?
【发布时间】:2008-09-19 16:05:43
【问题描述】:

在每个 PHP 页面的开头,我打开与 MySQL 的连接,在整个页面中使用它并在页面末尾关闭它。但是,我经常在页面中间重定向到另一个页面,因此在这些情况下连接不会关闭。我知道这对 Web 服务器的性能来说还不错,因为 PHP 无论如何都会在每个页面的末尾自动关闭所有 MySQL 连接。这里是否还有其他问题需要记住,或者您真的不必担心在 PHP 中关闭数据库连接?

$mysqli = new mysqli("localhost", "root", "", "test");
...do stuff, perhaps redirect to another page...
$mysqli->close();

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    仅仅因为您重定向并不意味着脚本停止执行。重定向只是发送的标头。如果您没有立即退出(),则脚本的其余部分将继续运行。当脚本完成运行时,它将关闭所有打开的连接(如果您使用持久连接,则将它们释放回池中)。不用担心。

    【讨论】:

      【解决方案2】:

      发件人:http://us3.php.net/manual/en/mysqli.close.php

      “打开的连接(和类似的资源)在脚本执行结束时会自动销毁。但是,您仍然应该在不再需要所有连接、结果集和语句句柄时立即关闭或释放它们。这将有助于返回资源到 PHP 和 MySQL 的速度更快。”

      【讨论】:

      • 快多少?随着它的进行,它会不断变慢吗?
      【解决方案3】:

      一次打开​​的连接数可能有限制,因此如果您有很多用户,您可能会用完 SQL 连接。实际上,用户将看到 SQL 错误而不是漂亮的网页。

      最好打开一个连接来读取数据,然后关闭它,然后显示数据,一旦用户点击“提交”,你就打开另一个连接,然后提交所有更改。

      【讨论】:

      • “实际上,用户将看到 SQL 错误而不是漂亮的网页。” - 我希望不是 display_errors = 0;!
      • 虽然确实一次打开的连接太多会导致此问题,但 OP 所描述的 DOES NOT 会导致连接保持打开状态 - 所以这个答案是“错误的”在这个问题的背景下。
      猜你喜欢
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-05
      • 1970-01-01
      • 2012-09-28
      相关资源
      最近更新 更多