mysql_connect v/s mysql_pconnect,mysqlpconnect

來源:互聯網
上載者:User

mysql_connect v/s mysql_pconnect,mysqlpconnect

原文:mysql_connect v/s mysql_pconnect

譯文:mysql_connect v/s mysql_pconnect

譯者:dwqs

當需要使用PHP串連MySQL資料庫的時候,會發現有兩種資料庫連接函數:mysql_connect()和mysql_pconnect()。

1、mysql_connect()

在指令碼開始的時候,mysql_connect()會建立一個新的串連,指令碼結束的時候就會關閉串連。指令碼每一次執行,它都會建立一個新的串連。

2、mysql_pconnect()

當使用mysql_pconnect()串連資料庫時,它首先會判斷是否已經存在了資料庫連接,如果存在,就會利用先用的資源ID,反之,就會建立一個新的串連。

在建立串連之後,函數返回資源ID(如果有)。當指令碼再次調用的時候,它並不會建立新的串連。當然,指令碼結束的時候,也不會關閉串連。這稱之為持久串連。

但是,使用mysql_pconnect()時,需要對伺服器配置做一下微調,譬如限制串連數,逾時串連,以及處理空串連等。

3、怎麼使用這兩個函數

如果你的應用有很大流量,應該使用mysql_pconnect()函數,反之考慮mysql_connect()函數。

如果PHP和MySQL在同一台伺服器上或者在本網,串連次數是可以忽略的,因為無論在哪種情況之下,持久串連都沒有優勢可言。

4、使用mysql_pconnect()應該留意的事

一般來說,當你鎖定一個表時,串連關閉之後是就自動解鎖了。但由於持久串連不關閉,任何你不小心鎖定的表仍然會保持鎖定的狀態,唯一解鎖的辦法就是等待連線逾時或者手動殺死進程。在進行事物處理時也會造成這個問題。

同樣,暫存資料表在串連關閉之後也會被刪除。但由於持久串連不關閉,暫存資料表就不再是暫存資料表了。如果你完成需求後不刪除暫存資料表,它將作為一個新的用戶端串連,並且是對於同一個串連。在設定Session變數的時候,會造成同樣的問題。

在Apache上使用持久串連的效果並不會很好。當Apache收到用戶端的一個請求時,會開啟一個新的資料庫連接,而不是利用已經存在持久串連去開啟資料庫,這將導致很多空閑進程、浪費資源,當達到最大串連數時,還是造成未知錯誤。

原文首發:http://www.ido321.com/1312.html

下一篇:DOM筆記(一):HTMLDocument介面

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.