为什么 MySQL 选择有时不会创建“客户端连接”?

为什么 MySQL 选择有时不会创建“客户端连接”?

我正在做一些测试(在我的开发服务器上),以帮助我找出导致生产服务器上连接列表不断增长的原因。我的假设是某些页面没有使用 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();

?>

我甚至添加了一个简单的 select 语句来确认我正在建立连接,并且确实如此。为什么此连接未显示在 MySQL Workbench 中的“客户端连接”列表中?我还使用另一个工具(MySQL Diagnostic Manager)来显示当前线程,但它也没有显示在那里。

我在这里遗漏了什么?

答案1

事实证明,此代码创建客户端连接,但由于脚本运行完成后它会立即关闭它,所以出现正在创建连接。:/

相关内容