
Ich führe einige Tests durch (auf meinem Entwicklungsserver), um herauszufinden, was die Ursache für die ständig wachsende Liste von Verbindungen auf meinem Produktionsserver ist. Ich gehe davon aus, dass es bestimmte Seiten gibt, die die Verbindung nicht mit mysql_close() schließen. Ich versuche also zunächst zu bestätigen, was die Verbindungen erstellt, und dann zu bestätigen, wie sichergestellt werden kann, dass sie geschlossen werden.
Zu diesem Zweck habe ich ein einfaches Skript zum Herstellen einer Verbindung erstellt, gefolgt von einem mysql_close() zum Schließen der Verbindung. Leider sind meine Tests ins Stocken geraten, da ich nicht einmal bestätigen kann, dass ich Verbindungen erstelle.
Wenn ich den folgenden Code ausführe (beachten Sie, dass mysql_close() auskommentiert ist), würde ich erwarten, eine neue Verbindung in meiner Client-Verbindungsliste zu sehen und dass sie sich nach 20 Sekunden selbst beendet, da ich das wait_timeout auf 20 gesetzt habe. Es scheint jedoch nicht einmal eine Verbindung hergestellt zu werden.
<?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();
?>
Ich habe sogar eine einfache Select-Anweisung hinzugefügt, um zu bestätigen, dass ich eine Verbindung herstelle, und das tue ich auch. Warum wird diese Verbindung nicht in meiner Liste „Clientverbindungen“ in MySQL Workbench angezeigt? Ich verwende auch ein anderes Tool (MySQL Diagnostic Manager), um mir die aktuellen Threads anzuzeigen, und sie werden dort auch nicht angezeigt.
Was übersehe ich hier?
Antwort1
Es stellte sich heraus, dieser Codetuteine Client-Verbindung herstellen, aber da es diese schließt, sobald das Skript fertig ausgeführt wird,erscheineneine Verbindung herzustellen. :/