Pear::db

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Pear::db

    Ich hab folgendes Problem :

    In meinen PHP-Skripten benutze ich DB-Klassen aus dem PEAR Package.
    Das klappt auch alles wunderbar.
    Nun möchte ich ganz gerne das erzeugte DB-Objekt in des Session
    zwischen speichern, damit ich später einfacher darauf zurgreifen kann :
    Folgendes habe ich gemacht :

    //$vDns = "oci8://userass@net8";
    $vDns = "mysql://userass@server";
    $vDB = DB::connect($vDns);//neues Verbindungsobjekt
    $_SESSION["db"]=$vDB;//objekt in session

    Jetzt kann ich auch prima daruaf zugreifen.
    Wenn das Skript allerdings zu ende gelaufen ist, passiert irgendwas
    mit dem Objekt, so dass es beim nächsten Skriptaufruf nicht mehr in
    der SESSION verfügbar bzw. nur noch "halb" verfügbar ist.

    Ich habs auch mal so probiert :
    $_SESSION["db"]=serialize($vDB);
    ...
    und beim nächsten Aufruf
    $vDB = unserialize($_SESSION["db"]);

    Brachte aber nichts. Hat jemand von Euch einen guten Tipp für mich?
    Achja...könnte vielleicht wichtig sein :
    PHP : 5.0.3 (läuft als Modul)
    MySQL : 4.1.10
    OS : Win2k Prof.
    Server : Apache 1.3

    Ich bin für jeden Vorschlag dankbar

    Danke und GRuss

  • #2
    http://www.php.net/manual/en/languag...ialization.php
    http://www.php.net/manual/en/languag...-functions.php

    Kommentar


    • #3
      Kannst du mir erklären wieso du die DB Verbindung per Session weitergeben willst?

      Außerdem solltest du PHP Code immer mit dem PHP - Tag posten
      PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

      Kommentar


      • #4
        Original geschrieben von Floriam
        Kannst du mir erklären wieso du die DB Verbindung per Session weitergeben willst?

        Ganz einfach...damit ich nicht bei jedem request wieder neu die
        Verbindung zur datenbank herstellen muss.

        Außerdem solltest du PHP Code immer mit dem PHP - Tag posten
        Werd ich mir fürs nächste mal merken...

        Kommentar


        • #5
          Original geschrieben von zyrano
          Ganz einfach...damit ich nicht bei jedem request wieder neu die
          Verbindung zur datenbank herstellen muss.
          mysql_close tut kund:
          Using mysql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.
          Du könntest höchstens dafür sorgen, dass du mittels __sleep und __wakeup die verbindung automatisch wieder aufbaust...
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Wenn ich das nun richtig verstanden habe, habe ich keine Möglichkeit die Verbindung mittels >>SESSION << offen zu halten.

            Kommentar


            • #7
              es ergibt ja auch keinen logischen sinn.
              beide scripte sind unabhaengig voneinander.
              waere ja so als ob du von einem zug in den anschlusszug steigst aber den motor mitnehmen musst, damit er fahren kann.
              btw: pear::db ist in 90% aller faelle vollkommen ueberladen. als einfache abstraktionsschicht imho nicht zu gebrauchen - da schreibt man sich schneller einen eigenen layer. pear::db hat nach dem instanzieren knapp 800kb ram usage - mein kleiner layer nur etwa 40kb ... wenn die website hoeher frequentiert wird wuerde ich das beachten!
              1101100 1101001 1100110 1100101 1101001 1110011 1100001 1100010 1101001 1110100 1100011 1101000

              /(bb|[^b]{2})/

              Kommentar


              • #8
                Original geschrieben von loci
                es ergibt ja auch keinen logischen sinn.
                beide scripte sind unabhaengig voneinander.
                waere ja so als ob du von einem zug in den anschlusszug steigst aber den motor mitnehmen musst, damit er fahren kann.
                btw: pear::db ist in 90% aller faelle vollkommen ueberladen. als einfache abstraktionsschicht imho nicht zu gebrauchen - da schreibt man sich schneller einen eigenen layer. pear::db hat nach dem instanzieren knapp 800kb ram usage - mein kleiner layer nur etwa 40kb ... wenn die website hoeher frequentiert wird wuerde ich das beachten!

                der logische sinn der da hinter steckt ist einfach : ich spare mir die
                zeit zum erneuten verbinden. Um Dein Beispiel mit den Zug
                aufzugreifen: wenn ich in einen anderen zug steige und den motor
                mitnehme der schon läuft, spare ich mir die zeit, den motor im
                anderen zug neu zu starten

                ich persönlich bin auch kein wirklicher freund von der klasse, aber die
                entscheidung diese zu nutzen, wurde an einer anderen stelle
                getroffen.

                Kommentar


                • #9
                  zeit die woanders draufgehen würde ..

                  ausbauen vom zug ( __sleep() )
                  und im anschlusszug einbauen ( __wakeup() )
                  mfg,
                  [color=#0080c0]Coragon[/color]

                  Kommentar

                  Lädt...
                  X