2012-07-08 59 views
3

之间有什么区别如下:PHP&mysqli:持久连接和交互有什么区别?

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

回答

2

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

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

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

1

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

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

+0

尽管有点帮助,但这个答案还不够详细,我无法提供。但是,谢谢你的回答! – 2012-07-09 11:28:41

相关问题