2010-06-02 247 views
2

如果MySQL數據庫未關閉,會發生什麼情況?我們如何知道它是否正確關閉?如果MySQL數據庫未關閉,會發生什麼情況?

我有這對一個page..so我所做的是我打開的數據庫頁面頂部腳本開始之前,關閉其中的腳本(PHP)結束11桌的網頁...

的結尾是mysql_close($ db); ...這是公平的還是我只需要給mysql_close();

+0

你說的是關閉整個數據庫(防止進一步訪問)或關閉數據庫的單個連接(釋放一個命名的管道或套接字)?你在問什麼? – 2010-06-02 13:31:36

+0

關閉單個連接...因爲我的搜索引擎很大程度上依賴於數據庫 – mathew 2010-06-02 13:40:07

回答

3

我無法確定所有服務器平臺上的所有PHP/Mysql版本的行爲方式是否相同。對於到數據庫的tcp連接 - 除非調用mysql_close($ db),否則在腳本結束後,您將有一個懸掛的tcp連接,只是坐在那裏等待半分鐘使用。然後它會自行消失。

我不能說如果這是PHP的垃圾收集需要完整的30秒完成,或者如果tcp連接設置爲自己在30秒後過期,一旦你調用連接。

Mysql_close($ db)會立即終止tcp連接。所以是的,我會說你不再需要腳本中的數據庫連接後,立即調用mysql_close($ db)。

-1

在腳本結尾處關閉連接沒有意義,因爲腳本終止時會爲您完成此操作。唯一一次你應該明確地調用close函數是,如果你正在運行一個守護進程或者某個東西,並且不想在整個運行時間內保持一個連接。

PDO被認爲是PHP現代的數據庫訪問庫(你真的應該使用它來代替mysql_*功能,但那是另一回事),甚至沒有一個貼心的功能,只是驅動點家。

+0

您應該經常手動關閉它 - 好習慣等。 – RSully 2012-03-24 14:46:36

相關問題