3

以下有什么区别:

// 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);
4

2 回答 2

3

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

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

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不会改变持久连接的行为。

于 2013-06-06T16:26:59.253 回答
1

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

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

于 2012-07-08T15:27:32.537 回答