2010-07-29 110 views
20

我真的需要做mysql_close()嗎?爲什麼或者爲什麼不?我真的需要做mysql_close()嗎?

是否有觸發器關閉mysql_connect後的鏈接,即使我沒有執行mysql_close?

+0

可能重複[關閉mysql連接重要?](http://stackoverflow.com/questions/880885/is-closing-the-mysql-connection-important) – NewUser 2017-01-09 11:36:10

回答

6

在大多數情況下,調用mysql_close不會有什麼區別,性能明智。但是關閉你的程序不再使用的資源(文件句柄,打開的套接字,數據庫連接等)總是一個好習慣。

如果您正在做某些可能需要幾秒鐘的事情 - 例如,從REST API讀取和解析數據,這尤其如此。由於API調用正在通過線路,負面的網絡狀況會導致您的腳本阻塞幾秒鐘。在這種情況下,在之後,打開數據庫連接的適當時間是,REST調用完成並被解析。

總之我的回答,兩大規則:

  1. 只有分配資源(文件句柄,插座,數據庫連接等),當你的程序就可以使用它們。
  2. 您的程序完成後立即釋放資源。
10

根據the documentation

使用mysql_close()通常是不必要的,因爲非持久打開鏈接在腳本執行結束時自動關閉。

就個人而言,我總是喜歡以確保我迂腐地接近任何東西,我打開,但它需要不是

+1

什麼是關閉鏈接的好處? – denniss 2010-07-29 05:36:09

+0

自己關閉鏈接沒有任何好處。 – Charles 2010-07-29 05:49:32

+2

@Charles如果您的腳本在完成使用MySQL後需要一段時間才能完成,那麼釋放其他腳本可能要使用的連接可能會有所幫助。 – penguin359 2011-11-30 01:51:34

3

手動says

使用mysql_close()通常是不必要的,因爲非持久打開連桿在腳本的執行的結束時自動關閉。

所以,不,不是真的。在嘗試可能消耗大量資源的操作之前釋放資源是有幫助的,但它可能不會產生重大影響。

3

什麼是關閉鏈接的好處?

通常,自己關閉鏈接沒有任何好處,因爲它會自動關閉。

我只能想到幾個好處

  • 如果你的腳本有很多處理的做它使用數據庫完成後,關閉數據庫連接過早可能有助於釋放一點點內存和其他資源(如MySQL連接),而腳本繼續其他事情。這在大多數腳本中都不太可能成爲問題,因爲大多數腳本在完成數據庫連接之後會很快終止,並且在PHP腳本終止之前連接保持打開狀態的時間會比較短。

  • 代碼的完整性和清潔度。它可以給你一個良好的感覺,並且通常是良好的代碼衛生來關閉你打開的東西,儘管在這種情況下它不是技術上需要的。

+4

如果限制連接到數據庫的連接數,使用mysql_close()會釋放其中一個連接,允許其他腳本訪問 – 2010-07-29 10:15:16

6

關閉鏈接有什麼好處?

好處是,您可以釋放與數據庫服務器的連接,並在PHP請求清理之前釋放數據庫服務器中的相應資源。

舉例來說,您可以在請求的前20毫秒內查詢您的請求需要的所有數據。但是,然後你的PHP代碼花費80毫秒運行代碼並格式化結果。這意味着80%的時間,該應用程序正在打開一個數據庫連接而不需要,並且平均而言,數據庫服務器上的10個連接線程中有8個是閒置和使用資源的。

+0

感謝這個答案。從來沒有想過這個,但你的簡單數學證明了關閉這些連接的巨大優勢(至少使它成爲標準練習,因爲你永遠不知道是否可能引入在完成數據庫後可能需要運行一段時間的代碼) 。 – tyrex 2014-11-14 12:16:09