2011-08-30 89 views
2

可以說我有一個調用PHP :: PDO的函數,該函數打開一個連接,運行MySQL,關閉連接,返回一些數據。PHP :: PDO多次打開/關閉連接

我還沒有看到這個問題有任何嚴重的問題,但是有沒有任何理由爲什麼這是一個不好的做法?這樣做的風險是什麼?

+1

你的意思是每次調用函數時都創建一個'PDO'對象的新實例?如果是這樣;你想要這個的任何特定原因? –

回答

2

我知道沒有風險,但建立連接時存在網絡滯後。如果您只是連接到localhost,它現在可能會正常工作,但是如果您爲每個HTTP請求建立多個連接並且因爲某種原因想要移動到輔助數據庫服務器,那麼您的應用程序可能會出現擴展問題。

PHP頁面本質上是單線程的,所以除非您自己啓動多個線程,否則不會有(額外的)併發問題。使用InnoDB和SQL事務來幫助防止跨多個請求的併發問題仍然是一個好主意。

0

只要你沒有更多的查詢運行,我不認爲這是一個問題。

+0

我擔心的是,如果發生'n'查詢,我可能會對SQL服務器做些簡單的事情。如果'n'是一個數字,我不知道它的價值。 – Incognito

1

多次打開和關閉連接都涉及相當多的開銷。在成爲性能問題之前,這並不是什麼大事。如果確實存在問題,您需要對其進行修改,以便在腳本持續時間內保持連接處於打開狀態,併爲多個數據庫事務重新使用相同的連接。這是一個相當普遍的做法。

如果您沒有每個腳本的固定(和少量)數據庫事務處理數量,我建議不要在每個操作中連接和斷開連接。取而代之的是打開它並保持連接,直到腳本終止。