程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql_connectv/smysql_pconnect

mysql_connectv/smysql_pconnect

編輯:MySQL綜合教程

mysql_connectv/smysql_pconnect


 

當需要使用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收到客戶端的一個請求時,會打開一個新的數據庫連接,而不是利用已經存在持久連接去打開數據庫,這將導致很多空閒進程、浪費資源,當達到最大連接數時,還是造成未知錯誤。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved