André Mantz: Script forken bei geöffneter SQL-Datenbank

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

  1. 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

    1. 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é

      1. 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

        1. Nochmals Danke für die schnelle Antwort. Ich werd das tatsächlich mal mit einer Test-DB ausprobieren.

          Gruß, André

    2. 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