PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "sleep" in mysql process list



lou_ziffer
01.02.05, 10:38
Hallo,

weiß jemand, was diese "Sleep"-Verbindungen in Mysql zu bedeuten haben? Ich connecte von einem Webserver (PHP+Mysql) mit nicht-persistenten Verbindungen zum DB-Server...


mysql> show processlist;
+----------+---------------+-----------------+---------------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----------+---------------+-----------------+---------------+---------+------+-------+------------------+
| 10010751 | root | localhost | louziffer | Sleep | 128 | | NULL |
| 10163090 | louziffer | localhost:59597 | louziffer | Sleep | 822 | | NULL |
| 10181587 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 10181794 | louziffer | localhost:34127 | louziffer | Sleep | 0 | | NULL |
+----------+---------------+-----------------+---------------+---------+------+-------+------------------+
4 rows in set (0.00 sec)

LKH
01.02.05, 10:56
Hi,

hier mal ein copy 'n paste:

Sleep: Der Thread wartet auf eine Benutzereingabe. Das ist der normale Zustand eines Threads.
Processes: Der Thread betrachtet gerade die andern Threads.
Connect: Der Thread empfängt gerade eine eingehende Verbindung von einem Client.
Init DB: Der Thread initialisiert gerade die Datenbank und bereitet sie für die Nutzung vor (beachten Sie, dass ein Thread zwischen verschiedenen Datenbanken wechseln kann).
Query: Der Thread führt gerade eine Anfrage aus. Sie sehen diesen Typ selten, da eine Anfrage in der Regel nur eine sehr kurze Zeit braucht.
Field list: Der Thread generiert gerade eine Liste aller Felder einer Tabelle.
Create DB: Der Thread erstellt gerade eine neue Datenbank.
Drop DB: Der Thread löscht gerade eine Datenbank.
Reload: Der Thread lädt gerade die MySQL-Zugangstabellen.
Refresh: Der Thread setzt gerade die Log-Dateien zurück und leert den Cache.
Statistics: Der Thread generiert gerade Statistiken.
Kill: Der Thread beendet gerade einen anderen Thread.
Shutdown: Der Thread ist dabei, alle anderen Threads zu löschen, und bereitet den Server für das Herunterfahren vor.
Quit: Der Thread ist gerade dabei, beendet zu werden.

Hoffe es hilft,

LKH

lou_ziffer
01.02.05, 11:10
aha, das heißt ich habe da ein Scripts, welches die DB-Verbindung nicht mehr geschlossen hat (Time = 822)?

Wann schließt PHP die Verbindung zum DB-Server? Nach kompilieren der PHP-Seite - ich meine Bereitstellen der endgültigen Seite, die danach zum Browser geschickt wird? Oder bleibt die DB-Verbindung so, lange offen, bis die Seite vollständig zum Browser übermittelt wurde? In diesem Fall würde es nämlich Sinn machen, die DB-Verbindungen im PHP-Skript mittels mysql_close() von Hand zu schließen, wenn viele Anfragen kommen und persistente Verbingunen aus verschiedenen Gründen nicht funktionieren, bzw. nicht verwendet werden können...

whistle
01.02.05, 12:31
Hi,
mit Verweis auf das php-Manual: Die Verbindung wird geschloßen, wenn das PHP-Skript beendet wird.

Quelle (http://www.php.net/manual/de/function.mysql-close.php)
Gruß
Whistle

lou_ziffer
01.02.05, 12:50
klar, das ist mir bekannt - die Frage war aber, wird zuerst der PHP-Code "ausgeführt", sodas der generierte HTML Code bereit zum Ausliefern ist, DANN die Verbindung getrennt, und dann die Seite an den Browser geschickt?
Oder wird die Verbindung erst getrennt, wenn die Seite vollständig an den Browser übertragen wurde. Dann würde die Verbindungsdauer zur DB nämlich auch abhängig von der Internetverbindung (Geschwindigkeit) des Users, der die Seite aufruft, abhängen.


Mittlerweile habe ich aber selbst die Lösung gefunden. 2teres ist der Fall!
Die Verbindung zum DB-Server wird, sofern sie nicht vorher von Hand mittels mysql_close() geschlossen wurde, erst beendet, wenn die Übertragung der generierten Seite zum Browser vollständig abgeschlossen ist. Genauer gesagt, passiert das Ausliefern und Generieren des HTML-Codes in einem Aufwisch. Link dazu: http://at.php.net/manual/de/features.connection-handling.php

Für die Suchfunktion (falls sich jemand die gleiche Frage stellt...) ;)