【问题标题】:PHP & mysqli: What is the difference between persistent connection and interactive?PHP & mysqli:持久连接和交互有什么区别?
【发布时间】:2012-07-08 04:57:05
【问题描述】:

以下有什么区别:

// Persistent connection
$mysqli->real_connect("p:" . $host, $user, $pass, $db, null, null, 0);

和

// Interactive connection
$mysqli->real_connect($host, $user, $pass, $db, null, null, MYSQLI_CLIENT_INTERACTIVE);

甚至这个...

// Interactive AND persistent
$mysqli->real_connect("p:" . $host, $user, $pass, $db, null, null, MYSQLI_CLIENT_INTERACTIVE);

【问题讨论】:

    标签: php mysqli persistent-connection interactive-mode


    【解决方案1】:

    只是我对文档的解释......

    永久连接无限期地保持打开状态。非持久连接不是。

    mysql_pconnect() 文档比 real_connect() 文档更清晰:

    mysql_pconnect() 的行为与 mysql_connect() 非常相似,但有两个主要区别。

    首先,在连接时,该函数将首先尝试查找已使用相同主机、用户名和密码打开的(永久)链接。如果找到,将返回它的标识符,而不是打开新连接。

    其次,脚本执行结束时不会关闭与 SQL 服务器的连接。相反,该链接将保持打开状态以供将来使用(mysql_close() 不会关闭由 mysql_pconnect() 建立的链接)。

    因此,这种类型的链接被称为“持久”。

    关于MYSQLI_CLIENT_INTERACTIVE:

    MYSQLI_CLIENT_INTERACTIVE

    在关闭连接之前允许 interactive_timeout 秒(而不是 wait_timeout 秒)不活动。客户端的会话 wait_timeout 变量将设置为会话 interactive_timeout 变量的值。

    通常,非持久连接会在 wait_timeout 变量指定的秒数后关闭。使用此标志,它们会在 interactive_timeout 变量指定的秒数后关闭。

    根据我的解释,这意味着 MYSQLI_CLIENT_INTERACTIVE 不会改变 持久 连接的行为。

    【讨论】:

      【解决方案2】:

      当您使用第一个时,mysqli 会尝试查找已使用相同主机、用户名和密码(NOT PORT)打开的(永久)链接。如果找到,将返回它的标识符,而不是打开新连接。

      脚本执行结束时不会关闭与 SQL 服务器的连接。相反,该链接将保持打开状态以供将来使用。

      【讨论】:

      • 虽然有点帮助,但这个答案不够详细,我无法投票。不过谢谢你的回答!
      猜你喜欢
      • 2011-04-21
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 2015-04-06
      相关资源
      最近更新 更多