Mysql

為什麼 MySQL 選擇有時不創建“客戶端連接”?

  • August 31, 2021

我正在做一些測試(在我的開發伺服器上),以幫助我找出導致我的生產伺服器上不斷增長的連接列表的原因。我的假設是某些頁面沒有使用 mysql_close() 關閉連接。因此,我首先嘗試確認是什麼創建了連接,然後確認如何確保它們已關閉。

為此,我創建了一個簡單的腳本來創建連接,然後使用 mysql_close() 來關閉連接。不幸的是,我的測試處於停滯狀態,因為我什至無法確認我正在創建連接。

當我執行以下程式碼(注意 mysql_close())被註釋掉時,我希望在我的客戶端連接列表中看到一個新連接,並且我希望它會在 20 秒後自行終止,因為我已將 wait_timeout 設置為 20 . 然而,甚至似乎沒有建立任何联系。

<?php

$dblocation = "127.0.0.1";
$dbusername = "blah_dev";
$dbpassword = "test";
$dbname = "blah_dev";
$dbdescription = "";

$conn = mysql_connect($dblocation, $dbusername, $dbpassword) or die ("<span style='color:red'>Unable to connect!  Press F5 to try again.</span>");
mysql_select_db($dbname, $conn) or die ("Unable to select database!");

$sql = "select fullname from months";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result)){

 echo "<table border=1>";
 do{
   $month = $row["fullname"];
   echo "<tr><td>".$month."</td></tr>";
 }while ($row = mysql_fetch_array($result));

 echo "</table>";
}

//mysql_close();

?>

我什至添加了一個簡單的選擇語句來確認我正在建立連接,並且我是。為什麼此連接未顯示在 MySQL Workbench 的客戶端連接列表中?我還使用另一個工具(MySQL 診斷管理器)向我顯示目前執行緒,但它也沒有顯示在那裡。

我在這裡想念什麼?

事實證明,這段程式碼確實創建了一個客戶端連接,但是因為它在腳本完成執行後立即關閉它,所以它似乎沒有創建連接。:/

引用自:https://serverfault.com/questions/1075951