簡體   English   中英

不關閉PHP腳本中的mysql連接的缺點是什么?

[英]what is the downside of not closing a mysql connection in php script?

我通過使用mysqli_connect函數建立連接來訪問php腳本中的數據庫。 我觀察到在腳本末尾關閉連接不是強制性的。

在為訪問php中的mysql數據庫而創建的連接腳本中不使用mysqli_close()有什么含義?

如果使用cgi,則不必關閉mysql連接,因為它們會在腳本執行結束時自動關閉。

文檔中

注意:腳本執行結束后,將立即關閉到服務器的鏈接,除非更早地通過顯式調用mysql_close()關閉了該鏈接。

盡管關閉連接被認為是一個好習慣。

如果您自己關閉連接:

  • 您必須為每個查詢檢查$_connected的值。 這意味着PHP必須檢查變量$_connected A)是否存在B)是布爾值並且C)是/ $_connected
  • 您必須調用“斷開連接”函數,而函數調用是PHP中較昂貴的操作之一。 PHP必須檢查您的函數A)是否存在,B)是否不是私有的/受保護的以及C)您是否為函數提供了足夠的參數。 它還必須在新的本地范圍中創建$ connection變量的副本。
  • 然后,您的“斷開連接”函數將調用mysql_close(),這意味着PHP A)檢查mysql_close()是否存在,以及B)您已向mysql_close()和C)提供了所有必需的參數,它們是正確的類型(mysql資源)。

因此,如果您不使用持久連接,則在頁面執行結束時將關閉MySQL連接。 因此,您不必為此而煩惱。 因此沒有任何缺點。

如果您確定不會再次使用該連接,或者沒有用於管理打開的連接的類,則關閉是一個好習慣。 有兩個原因:

  1. 如果您正在循環或在某種程度上創建了連接而不關閉先前的連接,則可以根據sql服務器端設置的任何限制來耗盡所有可用的數據庫連接。 通常,此限制是針對不是每個主機的每個人的,因此您也可以阻止其他人連接。
  2. 從Zend(可能已過時)中:在腳本執行結束時,會自動銷毀打開的連接(和類似資源)。 但是,您仍然應該在不再需要它們時關閉或釋放所有連接,結果集和語句句柄。 這將有助於更快地將資源返回到PHP和MySQL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM