以下内容有何不同之处:
// 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);
答案 0 :(得分:2)
我对文档的解释......
持久连接无限期保持打开状态。非持久性连接不是。
mysql_pconnect()文档比real_connect()文档更清晰:
mysql_pconnect()与mysql_connect()非常相似,但有两个主要区别。
首先,在连接时,该函数将首先尝试查找已使用相同主机,用户名和密码打开的(持久)链接。如果找到一个,将返回一个标识符,而不是打开一个新连接。
其次,当脚本的执行结束时,不会关闭与SQL服务器的连接。相反,链接将保持打开以供将来使用(mysql_close()不会关闭mysql_pconnect()建立的链接。)
因此,这种类型的链接称为“持久性”。
MYSQLI_CLIENT_INTERACTIVE
在关闭连接之前,允许 interactive_timeout 秒(而不是 wait_timeout 秒)不活动。客户端的会话wait_timeout变量将设置为会话interactive_timeout变量的值。
通常,非持久连接在 wait_timeout 变量指定的秒数后关闭。使用此标志后,它们会在 interactive_timeout 变量指定的秒数后关闭。
根据我的解释,这意味着 MYSQLI_CLIENT_INTERACTIVE 不会改变持久性连接的行为。
答案 1 :(得分:1)
当您使用第一个时,mysqli尝试查找已使用相同主机,用户名和密码(NOT PORT)打开的(持久)链接。如果找到一个,将返回一个标识符,而不是打开一个新连接。
当脚本的执行结束时,不会关闭与SQL Server的连接。相反,该链接将保持打开以供将来使用。