回答
服務器和數據庫的可用連接數量有限。如果您的每個用戶都無緣無故地保持開放連接(如他們正在閱讀已經加載的頁面的博客文章),那麼它將限制可以在生產中連接到您的項目的人數。除非有特別需要保持連接的開放,否則我建議不要這樣做。
雖然如此,它確實取決於您的項目範圍。如果您只是在討論網站的單個頁面,通常可以將連接保持打開狀態,直到完成加載頁面。
也許你不應該爲每個查詢打開一個新的連接。
當然,每個通用規則都有例外,但通常應該在第一個查詢之前連接一次,然後在給定的PHP請求期間重複使用同一個mysqli連接對象進行多個查詢。
使用給定連接可以串行運行的查詢數量沒有限制。唯一的限制是您一次只能運行一個查詢。
想想這樣:如果您正在編寫PHP腳本來簡單地讀取文件,並且您知道要從該文件讀取多行文件,則可以保持文件句柄處於打開狀態並從多個讀取請求它在你關閉文件之前。在單個PHP請求期間,每次您想要從中讀取文件時都不會重新打開該文件。
打開與數據庫的新連接的開銷相當低(至少對於MySQL),但如果您有機會輕鬆減少開銷,則可能值得這樣做。
回覆您的評論:
你說得對,有沒有辦法,讓您的$ mysqli的對象跨頁。這就是術語請求的含義。對象和資源在請求結束時被清理。
當你說你爲每個查詢創建一個新的數據庫連接時,我假設你的意思是,如果你在一個請求(即頁面視圖)期間執行多個SQL查詢,你會創建一個新的$每個查詢的mysqli對象。這是沒有必要的。
還有一種方法可以重用從一個頁面視圖到另一個頁面視圖的數據庫連接。那是用persistent connections。這不會保留$ mysqli對象 - 您仍然必須在每個頁面加載上運行new mysqli
。但在內部,它正在重用以前的PHP請求中的數據庫連接。
所有你需要做的以這種方式打開一個持久連接是爲你的主機名添加前綴p:
。
好的,但我該怎麼做才能讓我的$ mysqli對象存儲我的.php頁面之間的數據庫連接? –
- 1. 我應該每次爲PHP創建數據庫連接嗎?
- 2. 我應該保持連接還是應該每次創建新連接?
- 3. SQL - 我應該在每次查詢後終止連接嗎?
- 4. 每次發佈後我應該關閉頻道/連接嗎?
- 5. 我應該在PHP中重新連接到mysql嗎?
- 6. 每次應用程序重新啓動時,我應該調用setMinimumBackgroundFetchInterval嗎?
- 7. 我應該用JDBC關閉每種方法的連接嗎?
- 8. SQL - 我應該使用連接嗎?
- 9. 我應該使用連接池嗎?
- 10. 我應該爲每個查詢創建一個新的數據庫連接嗎?
- 11. 我應該爲每個連接創建一個新的Redis客戶端嗎?
- 12. PHP mysqli重新連接問題
- 13. 我應該每次鏈接GUI測試還是重新啓動applet?
- 14. 我應該在每一幀重新繪製SurfaceLayer嗎?
- 15. 我應該在每個網頁上重新生成_session_id嗎?
- 16. 我應該重複使用mysql連接
- 17. 我應該重新安裝Mysql嗎?
- 18. 第一次連接 - 重新連接
- 19. 我應該如何更新MySQLi表列?
- 20. 幾個小時後,我應該強制AMQ NMS重新連接嗎?
- 21. 我應該經常斷開/重新連接到MySQL服務器嗎?
- 22. 使用PostgreSQL的Rails每次請求重新連接多次
- 23. mysql連接。我應該保留它還是在每次交易之前開始新的連接?
- 24. MySQL,我應該在需要時保持連接或連接嗎?
- 25. 如果連接了jquery-ui.js,我應該連接jquery-ui.css嗎?
- 26. 令牌應該每次都改變嗎?
- 27. 每次我開始重新設計一個項目時,我應該創建一個新的git倉庫嗎?
- 28. 每次我畫什麼,我應該調用glEnable和glDisable嗎?
- 29. 每次我創建一個新項目時,我應該安裝express,node等嗎?
- 30. 每次我要求位置更新時,我應該使用android LocationManager.getBestProvider嗎?
好的,我怎麼能避免這些多個連接?我怎樣才能保持我的mysqli連接頁面腳本之間? –