我正在做一些测试(在我的开发服务器上),以帮助我找出导致生产服务器上连接列表不断增长的原因。我的假设是某些页面没有使用 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
事实证明,此代码做创建客户端连接,但由于脚本运行完成后它会立即关闭它,所以出现正在创建连接。:/