Script forken bei geöffneter SQL-Datenbank
André Mantz
- perl
Hallo,
ich habe ein Perl-Script, an dessen Anfang eine SQL-Datenbank geöffnet wird (mit Modul DBI). Es werden einige SQL-Abfragen durchgeführt.
An einer bestimmten Stelle wird nun das Script "geforkt".
Sowohl Eltern- als auch Kindprozess führen noch einige SQL-Abfragen durch. Der Kindprozess beendet sich danach, der Elternprozess gibt noch die HTML-Seite aus und beendet sich dann.
Meine Frage nun: Welcher der beiden Prozesse soll die Datenbank schliessen? Oder können das beide für sich tun?
Danke für Eure Hilfe,
André Mantz
Hallo,
Meine Frage nun: Welcher der beiden Prozesse soll die
Datenbank schliessen? Oder können das beide für sich tun?
Das muessen beide tun, denn die Verbindung muesste an der
Stelle dupliziert werden.
Gruesse,
CK
Meine Frage nun: Welcher der beiden Prozesse soll die
Datenbank schliessen? Oder können das beide für sich tun?
Das muessen beide tun, denn die Verbindung muesste an der
Stelle dupliziert werden.
Danke für die schnelle Antwort, aber "muesste" ist mir leider zu ungenau. Nicht das ich am Ende noch die DB schließe, während der andere Prozess gerade in die DB schreibt.
Gruesse,
CK
Gruß zurück, André
Hallo,
Danke für die schnelle Antwort, aber "muesste" ist mir
leider zu ungenau.
Es gibt genau 2 Wege, 100% sicher zu gehen: ausprobieren oder
nachschauen.
Generell wird bei einem fork() eine Kopie des Filedescriptors
gemacht, wie bei dup2(2). Und in dup2(2) heisst es:
| The two descriptors do not share the close-on-exec
| flag, however.
Ergo, es muessten beide geschlossen werden.
Nicht das ich am Ende noch die DB schließe, während der
andere Prozess gerade in die DB schreibt.
Schreib ein Test-Script :)
Gruesse,
CK
Nochmals Danke für die schnelle Antwort. Ich werd das tatsächlich mal mit einer Test-DB ausprobieren.
Gruß, André
Hallo!
Das muessen beide tun, denn die Verbindung muesste an der
Stelle dupliziert werden.
Wird in PERL nicht die DB-Verbindung automatisch mit Ende des Scriptes geschlossen, wie in PHP?
Grüße
Andreas