在CI框架的數據庫配置文件中$db['default'] ['pconnect'] = TRUE,永久的數據庫連接是指在您的腳本結束運行時不關閉的連接。 當收到一個永久連接的請求時,PHP將檢查是否已經存在一個前面已經開啟的相同的永久連接, 如果存在,將直接使用這個連接;如果不存在,則建立一個新的連接。 所謂“相同”的連接是指用相同的用戶名和密碼到相同主機的連接。 適當的選擇可以提高性能,但是如果在永久連接中使用數據表鎖時,如果無法釋放數據表鎖,隨后使用相同連接的腳本將會被永久阻塞,使得我們必須重啟httpd服務或者數據庫服務; 在不了解這個機制的時候就很容易導致MySql的數據庫連接過多而不能及時釋放; 在順網無線項目中使用了這個機制,當用戶訪問過多時直接導致數據庫too many connects; 當然對數據庫壓力和web服務器資源消耗最大的數據庫應用一個是全表like操作,另外一個就是打開關閉數據庫了,其實在一個站點中,無論有多少個人連接到這個站點,讀取的數據庫,使用的用戶名、密碼都是同一個。你不是主機提供商,不會為你的網站上的每一個用戶單獨創建一個數據庫吧。只要你的網站在運行,使用長久連接就保證數據庫的連接是打開的。這樣可以減少服務器的壓力。一方面服務器保證了你這個是已經通過登錄驗證的,不用每次查詢用戶信息庫來驗證用戶名和密碼。另一方面,你的PHP程序也可以直接執行SQL語句,減少了工作量。 因此要合理的使用短連接和長連接; 用的時候分析應用場景和性能壓力測試一番。
