2012-07-08 78 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

相關問題