Markus Schmidt: Klassenmethoden nicht beim ersten Mal in einer Session nutzbar

Ich hab eine Klasse verbindung, diese stellt die Verbindung zu einer Datenbank her. Wenn die Seite zum ersten Mal aufgerufen wird, wird eine SESSION-Variable connection angelegt. Der Konstruktur lässt sich zwar nutzen, wenn ich aber auf Funktionen zugreifen will, kommt die Meldung "call to a member function on a non object". Beim ersten Aufruf nutze ich die Funktionen zwar über verbindung::funktionsname(), also ohne ein Objekt. Beim ersten Aufruf erfolgt nur eine Verbindungsüberprüfung, also ich brauche kein Objekt. Ist das nun ein allgemeines Problem?

Mein System:
IIS 5.0
Windows2000-Server
MSSQL-Server 7.0

In der PHP.ini:
auto_start der Session auf 0, da ich sonst die Klasse nicht definieren kann.
register_globals on
Sonst Standardeinstellungen

  1. Hallo Markus,

    Um es kurz und schmerzlos zu machen: Du kannst weder Objekte noch Resourcen (wozu u.a. die Datentypen, die von den Datenbankverbindungsfunktion zurückgegeben werden) in Sessions speichern. Letztere überhaupt nicht und erstere werden nicht korrekt serialisiert. Du musst wohl oder übel die Verbindung jedes Mal neu aufbauen.

    Da Du MS SQL verwendest, solltest Du Dir mal die Funktion mssql_pconnect anschauen: http://www.php3.de/manual/de/function.mssql-pconnect.php.

    Grüße,

    Christian

    --
    Sollen sich alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen und nicht mehr davon erfasst haben als eine Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst.
                          -- Albert Einstein
    1. Hallo Christian!

      Um es kurz und schmerzlos zu machen: Du kannst weder Objekte noch Resourcen (wozu u.a. die Datentypen, die von den Datenbankverbindungsfunktion zurückgegeben werden) in Sessions speichern. Letztere überhaupt nicht und erstere werden nicht korrekt serialisiert. Du musst wohl oder übel die Verbindung jedes Mal neu aufbauen.

      sicher? Siehe:
      28.14. Wie speichere ich Objekte in Sessions?
      http://www.dclp-faq.de/q/q-sessions-objekte.html

      bei Recourcen habe ich keine Ahnung.

      Grüße
      Andreas