簡體   English   中英

在PHP中關閉MySQL連接

[英]Closing a MySQL connection in PHP

我只是想知道,在頁面末尾用PHP關閉MySQL連接是否合適? 有什么好處? 關閉它是否重要?

真誠的,喬伊

通常不需要使用mysql_close(),因為非持久性打開鏈接會在腳本執行結束時自動關閉,但是還要記住,一旦不再需要資源就終止這些資源始終是一種好習慣。 如果您的腳本長時間運行而不再需要資源,則不再需要讓您更接近資源耗盡

無論如何,PHP將在腳本的末尾釋放任何資源。

最好是釋放文件資源並鎖定文件,例如,因為您的腳本可能以1s的形式運行,但在腳本的最開始可能只需要幾毫秒的文件。

使用相同的推理,如果你在開始時使用SQL幾毫秒,那么只對提取的數據進行處理 - 通過關閉你的連接,你允許另一個連接代替你的位置(有兩個同時連接的MySQL限制)制作)。

另一方面,如果你在腳本的末尾釋放它,因為你在腳本的整個執行期間(間歇地)使用數據庫,那么你只是在腳本結束時做PHP將要做的事情。

是的,最好在使用后關閉連接,這樣可以減輕數據庫的負擔。性能會提高。 應該始終在使用后釋放資源,以便其他用戶可以使用它們。

如果你的意思是使用持久連接:一般來說(99.99%的時間)使用持久連接是非常明智的(!)。 當然不是在使用交易時。 每個請求打開和關閉連接的性能損失並不大。

PHP持久連接很糟糕,因為......

  • 它們導致MySQL中的事務,表鎖,臨時表,會話變量和大多數其他有用的功能非常危險,可能會在頁面生成過程中導致服務器范圍內的死鎖和數據庫錯誤。
  • 它們占用了數百個MySQL套接字和線程,增加了在某個地方達到限制的風險(打開文件,mysql設置,內核限制?)。
  • 當由於持久連接而導致某些事情中斷時,診斷肯定非常困難,因為它只會在某個線程按特定順序提供某些請求后才會顯示。
  • 對於一個Web服務器池,一個慢速Web服務器可以備份並消耗這么多連接,它無法使用其他服務器無法創建連接來完成其請求。

例如,請參閱本文。

http://meta.wikimedia.org/wiki/Why_persistent_connections_are_bad

一般來說,盡快顯式釋放您獲得的所有資源也是一種很好的編程習慣,因為它們可以被競爭的例程腳本使用。 使用構造函數和析構函數(“智能資源”)是一種很好的方法。 在PHP中,您的腳本可能會以致命錯誤結束,在這種情況下您將無法自行釋放它們。

$ conn = new mysqli(“localhost”,“Username”,“Password”,“Db_name”);

$sql = "SELECT * FROM `your_table_name`";

$connStatus = $conn->query($sql);

$numberOfRows = mysqli_num_rows($connStatus);

$numberOfRows; 

//this echo out the total number of rows returned from the query

$conn->close();

暫無
暫無

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

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