2010-08-13 124 views
10

總之,是有高使用率某種mysqli_pconnectPHP & MySQL服務器,或者我需要堅持mysql未改良?如果是這樣,他們爲什麼要刪除它?mysqli的持久連接

回答

15

對此的支持是在PHP 5.3中引入的。對於之前的版本,PDO和 - god禁止 - mysql擴展是唯一的選擇。

引述manual

與mysql擴展,mysqli的不打開持久連接提供一個單獨的功能。要打開持久連接,連接時必須在主機名前加上p:。

+0

因此,對於5.3之前版本,什麼是黑客或解決方法? – Pacerier 2015-06-25 07:41:26

8

我不打擾MySQL中的持久連接。持久連接適用於像Oracle這樣的數據庫,其中使新連接速度慢得多。

在MySQL中,建立連接相對較快(特別是關閉反向DNS查找時)。應該不需要與MySQL建立持久連接。如果您的應用程序對性能至關重要,那麼您可以做更多的事情,而不必擔心持續連接問題。

此外,持續性連接會帶來意想不到的副作用。如果您使用MySQL變量,臨時表,更改連接的字符集或忘記完成事務,則可能會導致問題。例如,您可以將一個用戶的私人數據公開給另一個用戶的PHP會話,因爲您保留了一個臨時表。

+0

閱讀我已鏈接的手冊頁。每個PHP請求後都有清理操作。但是,是的,大多數時候它使用持續連接將不值得。 – Artefacto 2010-08-13 18:16:42

+0

謝謝,這是令人放心的。 – 2010-08-13 18:38:35

4

其實mysqli庫有persistent support。只需在主機名前添加「p:」即可完成。

+0

你如何在主機名上添加「p:」?例如:\t \t \t $ this-> mysqli = new mysqli(mysql_host,mysql_user,mysql_password,mysql_database); – 2014-01-05 19:56:58

+4

@JavaNewb:對於復活舊線程感到抱歉,但我們留下了一個沒有答案的問題!我用字符串連接「prepend p:」。例如:$ this-> mysqli = new mysqli('p:'。mysql_host,mysql_user,mysql_password,mysql_database); – 2014-09-04 20:25:03

+0

這是一個非常好的解決方案。爲我工作很好! – zmonteca 2015-05-05 17:53:42