Seite 1 von 1

Offene SQL-Connection feststellen...

Verfasst: Sonntag 5. Juni 2005, 19:22
von jens
Ich möchte gern feststellen, ob am Ende meines Skriptes, evtl. noch SQL-Connections vorhanden sind. Kann man das feststellen???

Man konnte doch auch eine Fuktion definieren, die immer beim Programm-Ende noch ausgeführt werden soll... Ich weiß leider nicht mehr wie man das realisieren kann...

EDIT: Punkt 2 hat sich erledigt: atexit

Verfasst: Sonntag 5. Juni 2005, 20:19
von CM
Hoi Jens,

vielleicht nicht ganz die Antwort auf Deine Frage, aber ich würde alle Verbindungen sammeln (z. B. in einer Liste) und beim Verlassen eines Programms eine Schleife drüber machen und versuchen (try/except) alle Verbindungen wieder zu schließen. Auf diese Weise mußt Du nicht erst suchen und testen, sondern machst einfach. Ich weiß nicht, wie Dein Skript nun ausschaut, aber u. U. spart dir diese Heransgehensweise Zeit und Nerven.

Gruß,
Christian

Verfasst: Sonntag 5. Juni 2005, 20:46
von jens
Ich würde es zum testen nutzen, damit ich erkennen kann, ob ich alles richtig programmiert hab und alle SQL-connections wirklich wieder geschlossen werden.

Wobei, werden nicht evtl. alle connections, beim ende des CGI-Skriptes von MySQLdb automatisch geschlossen??? Was passiert beim einem sys.exit(1)???

Verfasst: Sonntag 5. Juni 2005, 21:05
von BlackJack
Dateien und Sockets werden spätestens vom Betriebsystem geschlossen wenn ein Programm beendet wird.

Verfasst: Sonntag 5. Juni 2005, 21:09
von jens
Naja gut, dann muß ich mir ja nicht all zuviele Sorgen machen ;) Schön wäre es aber schon mal festzustellen, welche connections/handles offen sind...

Verfasst: Sonntag 5. Juni 2005, 21:53
von querdenker
hi jens!
Mit welcher DB arbeitest du?
vom kinterbasdb-Modul kenne ich die Funktionen _has_db_handle und _has_transaction für eine connection, desweiteren _close_physical_connection um die Verbindung wirklich dicht zu machen.

Vielleicht hat 'dein' DB-Modul ja auch eine solche Funktion??

mfg, querdenker

Verfasst: Montag 6. Juni 2005, 22:26
von BlackJack
Aber immer dran denken: Namen mit einem führenden Unterstrich sollte man höchstens mal zum Debuggen verwenden und nicht "wirklich" benutzen.

Verfasst: Dienstag 7. Juni 2005, 06:31
von jens
querdenker hat geschrieben:Mit welcher DB arbeitest du?
Mit MySQLdb... Leider sind die Doku's ja nicht so besonders...

Verfasst: Mittwoch 8. Juni 2005, 00:38
von BlackJack
Ich weiss, das sagte ich schon mal: die DB API 2.0 sagt eigentlich alles was man wissen muss und sollte wenn man mit Modulen arbeitet, die diese implementieren.