【问题标题】:does the connection to MySQL auto close when a user is redirected?当用户被重定向时,与 MySQL 的连接会自动关闭吗?
【发布时间】:2014-04-08 17:46:57
【问题描述】:

我正在使用 pdo 方法通过 PHP 连接到 MySQL 数据库。

以下是编写我的页面以执行的步骤。 1)打开连接 2) 运行查询 1 3) 运行查询 2 4) 运行查询 3 5) 关闭连接。

现在,如果我想在第 3 步之后使用“header('Location new_page.php')”函数将用户重定向到不同的页面,是否会在用户离开页面后自动关闭与数据库的连接?还是我需要在传输发生之前手动关闭连接?

谢谢

【问题讨论】:

  • Google 找到了很多关于这个主题的结果。答案是肯定的,会的。谷歌搜索词使用“重定向后mysql连接会自动关闭吗?”
  • 如果您的脚本在headerdieexit 之后没有完成,那么不会...第4 步也会执行...
  • 如果你使用PDO::ATTR_PERSISTENT,那么你的连接在php执行结束后不会关闭,并且会被下一个pdo连接重用
  • PHP 会在脚本终止时进行清理,这也会关闭任何打开的数据库连接,关闭打开的文件,等等等等。

标签: php mysql pdo


【解决方案1】:

您不必这样做,脚本结束时连接会自动关闭。

来自 PHP 文档 ...

通常不需要使用 mysql_close(),因为非持久打开 链接在脚本执行结束时自动关闭。

这对于 PDO 也很常见。

还有,这个……

使用 PHP 4 的 Zend 引擎,不再引用它的资源是 自动检测到,并由垃圾收集器释放。为了 因此,很少需要手动释放内存。

回答你的问题..

现在,如果我想将用户重定向到不同的页面,使用 第 3 步之后的“header('Location new_page.php')”函数将 自从用户离开页面后,与数据库的连接会自动关闭吗? 还是我需要在传输之前手动关闭连接 发生了什么?

每当你做一个 header 时,使用 exitdie 来结束脚本。

die(header("location:somepage.php"));

header("location:somepage.php");
exit;

【讨论】:

  • header 调用不会结束 php 脚本执行
  • 首先.. 在header 之后你不能有逻辑,你会得到一个headers already sent warning 首先
  • headers already sent 是关于一些回显 before header 或 cookie 设置
【解决方案2】:

是的,该页面的 PHP 执行完成后,连接将被关闭。换句话说,在页面加载结束时,连接将被关闭。

【讨论】:

    【解决方案3】:

    不,标头调用不会停止脚本执行

    解释:

    <?php
    
    //1) open connection 
    //2) run queries 1 
    //3) run queries 2 
    header('Location: /');
    //script execution continuous here
    //4) run queries 3 
    exit();// here php close all your connections
    //5) run queries 4 //Unreachable code
    //6) close connection.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 2017-05-24
      相关资源
      最近更新 更多