可以說我有一個調用PHP :: PDO的函數,該函數打開一個連接,運行MySQL,關閉連接,返回一些數據。PHP :: PDO多次打開/關閉連接
我還沒有看到這個問題有任何嚴重的問題,但是有沒有任何理由爲什麼這是一個不好的做法?這樣做的風險是什麼?
可以說我有一個調用PHP :: PDO的函數,該函數打開一個連接,運行MySQL,關閉連接,返回一些數據。PHP :: PDO多次打開/關閉連接
我還沒有看到這個問題有任何嚴重的問題,但是有沒有任何理由爲什麼這是一個不好的做法?這樣做的風險是什麼?
我知道沒有風險,但建立連接時存在網絡滯後。如果您只是連接到localhost
,它現在可能會正常工作,但是如果您爲每個HTTP請求建立多個連接並且因爲某種原因想要移動到輔助數據庫服務器,那麼您的應用程序可能會出現擴展問題。
PHP頁面本質上是單線程的,所以除非您自己啓動多個線程,否則不會有(額外的)併發問題。使用InnoDB和SQL事務來幫助防止跨多個請求的併發問題仍然是一個好主意。
多次打開和關閉連接都涉及相當多的開銷。在成爲性能問題之前,這並不是什麼大事。如果確實存在問題,您需要對其進行修改,以便在腳本持續時間內保持連接處於打開狀態,併爲多個數據庫事務重新使用相同的連接。這是一個相當普遍的做法。
如果您沒有每個腳本的固定(和少量)數據庫事務處理數量,我建議不要在每個操作中連接和斷開連接。取而代之的是打開它並保持連接,直到腳本終止。
你的意思是每次調用函數時都創建一個'PDO'對象的新實例?如果是這樣;你想要這個的任何特定原因? –