tws: db verbindung in session ablegen

Hi,

Ich hätt mir überlegt das Ergebnis von pg_connect in $_SESSION abzulegen, da es den Vorteil hätte sich in nur einem Skript um die Anmeldung bei der DB kümmern zu müssen

jedoch stellen sich (auf Grund meines fehlenden Hintergrundwissens über PHP) folgende Fragen:

  • wird die Verbindung nach Ende des Skripts beendet? (was imho ja der Fall sein müsste, da man die Verbindung selbst nie schließen muss)
  • kann ich resource links überhaupt in $_SESSION ablegen? serialize() kann damit ja nicht umgehen
  • wie sieht es aus wenn die Sitzung ausläuft? In PHP gibt es ja afaik keine möglichkeit bei bestimmten Ereignissen (wie Session/Applikation Begin/Ende - wie in z.B. ASP.NET) Code ausführen zu lassen.

Gibt es weitere Vorschläge was ich machen könnte um nicht in jedem Skript immer wieder zur DB verbinden zu müssen? (damit ist nicht pg_pconnect gemeint!)

  1. Also entweder du hältst die Verbindung offen, wofür du eben pconnect nutzt oder du schließst sie (bzw. lässt sie am Ende deines Skriptes automatisch schließen).
    Wenn deine Methode die Verbindung in der Session zu speichern funktionieren würde wäre dies übrigens nichts anderes als eine persistente Verbindung, da die "Leitung" ohnehin offen bleiben muss.

    1. Wenn deine Methode die Verbindung in der Session zu speichern funktionieren würde wäre dies übrigens nichts anderes als eine persistente Verbindung, da die "Leitung" ohnehin offen bleiben muss.

      Du hast mich falsch verstanden...
      Wenn ich pconnect verwenden muss ist das kein problem, mir geht es nur darum mir den resource link nur einmal besorgen zu müssen

      1. hi,

        Du hast mich falsch verstanden...
        Wenn ich pconnect verwenden muss ist das kein problem, mir geht es nur darum mir den resource link nur einmal besorgen zu müssen

        Warum - um zwei bis drei lächerliche Zeilen an Code einzusparen?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Moin!

          Du hast mich falsch verstanden...
          Wenn ich pconnect verwenden muss ist das kein problem, mir geht es nur darum mir den resource link nur einmal besorgen zu müssen

          Warum - um zwei bis drei lächerliche Zeilen an Code einzusparen?

          Sehe ich ähnlich.

          In nahezu jedem Skript, was Datenbankanbindung realisiert, wird mindestens eine Zeile für das Include von skriptübergreifenden Bibliohtheken benutzt. Wo ist da also das Problem, die Datenbankanbindungsaufweckfunktion in so ein Skript zu packen.

          Alternativ (das würde ich dringend empfehlen): Erstellung einer Datenbankabfrageklasse (ggf. als Singleton), die mit Include eingebunden wird, und die ganz automatisch die Datenbankverbindung herstellt, sobald der erste Query genutzt wird. Oder sobald sie instantziiert wird.

          Ich kann mich eigentlich an kein größeres Projekt erinnern, in dem der Connect-Befehl zur Datenbank im gesamten Code mehr als einmal vorkam.

          - Sven Rautenberg

          --
          "Love your nation - respect the others."
  2. echo $begrüßung;

    Ich hätt mir überlegt das Ergebnis von pg_connect in $_SESSION abzulegen, da es den Vorteil hätte sich in nur einem Skript um die Anmeldung bei der DB kümmern zu müssen

    Die Dinge hinter einer Ressourcenkennung sind etwas komplexer als es auf den ersten Blick aussieht. Die Kennung allein nützt dir nichts. Am Script-Ende werden alle benutzten Ressourcen wieder freigegeben. Die Ressourcenkennung würde dann ins Leere zeigen.

    jedoch stellen sich (auf Grund meines fehlenden Hintergrundwissens über PHP) folgende Fragen:

    • wird die Verbindung nach Ende des Skripts beendet? (was imho ja der Fall sein müsste, da man die Verbindung selbst nie schließen muss)

    Ja.

    • kann ich resource links überhaupt in $_SESSION ablegen? serialize() kann damit ja nicht umgehen

    Selbst wenn, es wäre nicht sinnvoll. Allerdings kann man bei Objekten mit etwas Magie so tun, als ob die Verbindung weiterbesteht, indem man beim "Aufwecken" sie einfach wieder herstellen lässt.

    • wie sieht es aus wenn die Sitzung ausläuft? In PHP gibt es ja afaik keine möglichkeit bei bestimmten Ereignissen (wie Session/Applikation Begin/Ende - wie in z.B. ASP.NET) Code ausführen zu lassen.

    Das zu klären ist für die Ressourcenkennung irrelevant. Sie überlebt ein Abspeichern in einer Session sowieso nicht in wiederverwendbarer Weise.

    Gibt es weitere Vorschläge was ich machen könnte um nicht in jedem Skript immer wieder zur DB verbinden zu müssen? (damit ist nicht pg_pconnect gemeint!)

    Persistente Verbindungen sind sowieso nicht ganz ohne. Siehe </archiv/2006/10/t138996/#m903139>. Ansonsten Objekte und oben erwähnte Magie bzw. https://forum.selfhtml.org/?t=152865&m=994477.

    echo "$verabschiedung $name";