phpbar.de logo

Mailinglisten-Archive

[php] MySQL-Handle nicht Objekt??

[php] MySQL-Handle nicht Objekt??

Gloss Mathias php_(at)_phpcenter.de
Tue, 6 Nov 2001 15:22:12 +0100


Aloha,

> Von: 	Thomas Beckmann[SMTP:beckmann_(at)_gis.de]
>=20
> >> Ich begreife nicht, wieso sich das MySQL-hdl nicht vern=FCnftig im
> >> Objekt speichern l=E4=DFt.
> >
> >Soweit ich weiss werden normale Datenbankverbindungen nach =
beendigung
> eines=20
> >Skripts automatisch geschlossen (sollte man aber trotzdem lieber per =
hand
>=20
> >machen). Wie das bei persistenten Datenbankverbindungen ist weiss =
ich
> nicht,=20
> >aber wahrscheinlich wird das Handle ung=FCltig.
>=20
> Michael, laut Handbuch ist's bei pconnect eben nicht so, da=DF die
> Verbindung geschlossen wird=20
>=20
Wird sie auch nicht. Der im Webserver geladene PHP Interpreter (Das mit =
den
persistenten
DB-Verbindungen funktioniert NUR, wenn PHP als Modul l=E4uft!) h=E4lt =
f=FCr dich
die Verbindung
zur Datenbank aufrecht.

Beim n=E4chsten Aufruf von X_pconnect schaut der Interpreter, ob er =
schon eine
Verbindung
zu einer Datenbank hat, bei der (hostname,db-name, user, pass) =
identisch
sind. Wenn ja
(und Verbindung noch intakt) bekommst du diese zur=FCck , ansonsten =
wird eine
neue gemacht.

F=FCr diese Verbindung bekommst du eine Ressorce-ID, mit der du in deim =
Script
wunderbar
arbeiten kannst, aber nicht dar=FCber hinaus (Stell dir vor der =
Webserver wird
durchgestartet,
oder der apache-Prozess beendet sich alle X requests, dann ist halt gar
keine Verbindung
da, obwohl du mal eine Ressource ID hattest...)

> ... allerdings scheint's so zu sein, wie
> Mario schrieb: Der resource-id l=E4=DFt sich nicht speichern, aber =
dennoch
> wird nach dem n=E4chsten pconnect wieder derselbe handle =
zur=FCckgegeben -
>=20
Das ist Zufall, ob der gleiche Handle zur=FCckgegeben wird.

> allerdings muss dann auch der db-select neu gemacht werden.
>=20
Genau. Wenn du wenige Werte aus dem select hast, kannst du diese in der
Session
ablegen. Wenn die Ergebnismenge gro=DF ist, ist es geschickter nochmals =
die
Datenbank
zu befragen. Letzteres kostet gar nicht so viel wenn die Verbindung
persistent ist und
die Datenbank =FCber ein ausgereiftes Caching verf=FCgt (der Daten, =
Indexe,
geparste
SQL-Statements...)

> Bin dabei, mich damit abzufinden ...
>=20
Eigentlich solltest du es jetzt verstanden haben und dich nicht damit
abfinden m=FCssen ;)

Viele Gr=FC=DFe, Mathias



php::bar PHP Wiki   -   Listenarchive