
我正在(在我的開發伺服器上)進行一些測試,以幫助我找出導致生產伺服器上的連線清單不斷增長的原因。我的假設是某些頁面沒有使用 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 診斷管理器)來向我顯示當前線程,但它也沒有顯示在那裡。
我在這裡缺少什麼?
答案1
事實證明,這段程式碼做建立一個客戶端連接,但因為它會在腳本完成運行後立即關閉它,所以不會出現正在建立連線。 :/