2014-01-13 28 views

回答

0

服務器和數據庫的可用連接數量有限。如果您的每個用戶都無緣無故地保持開放連接(如他們正在閱讀已經加載的頁面的博客文章),那麼它將限制可以在生產中連接到您的項目的人數。除非有特別需要保持連接的開放,否則我建議不要這樣做。

雖然如此,它確實取決於您的項目範圍。如果您只是在討論網站的單個頁面,通常可以將連接保持打開狀態,直到完成加載頁面。

+0

好的,我怎麼能避免這些多個連接?我怎樣才能保持我的mysqli連接頁面腳本之間? –

0

也許你不應該爲每個查詢打開一個新的連接。

當然,每個通用規則都有例外,但通常應該在第一個查詢之前連接一次,然後在給定的PHP請求期間重複使用同一個mysqli連接對象進行多個查詢。

使用給定連接可以串行運行的查詢數量沒有限制。唯一的限制是您一次只能運行一個查詢

想想這樣:如果您正在編寫PHP腳本來簡單地讀取文件,並且您知道要從該文件讀取多行文件,則可以保持文件句柄處於打開狀態並從多個讀取請求它在你關閉文件之前。在單個PHP請求期間,每次您想要從中讀取文件時都不會重新打開該文件。

打開與數據庫的新連接的開銷相當低(至少對於MySQL),但如果您有機會輕鬆減少開銷,則可能值得這樣做。


回覆您的評論:

你說得對,有沒有辦法,讓您的$ mysqli的對象跨頁。這就是術語請求的含義。對象和資源在請求結束時被清理。

當你說你爲每個查詢創建一個新的數據庫連接時,我假設你的意思是,如果你在一個請求(即頁面視圖)期間執行多個SQL查詢,你會創建一個新的$每個查詢的mysqli對象。這是沒有必要的。

還有一種方法可以重用從一個頁面視圖到另一個頁面視圖的數據庫連接。那是用persistent connections。這不會保留$ mysqli對象 - 您仍然必須在每個頁面加載上運行new mysqli。但在內部,它正在重用以前的PHP請求中的數據庫連接。

所有你需要做的以這種方式打開一個持久連接是爲你的主機名添加前綴p:

+0

好的,但我該怎麼做才能讓我的$ mysqli對象存儲我的.php頁面之間的數據庫連接? –

相關問題