phpbar.de logo

Mailinglisten-Archive

[php] Datenbankverbindung

[php] Datenbankverbindung

Hartmut Holzgraefe (_(at)_home) hartmut_(at)_six.de
Fri, 04 Aug 2000 09:25:54 +0200


Dieter Rößing wrote:
> Ich habe folgendes probiert, funktioniert aber nicht, es wird zwar die
> Kennung übertragen aber das 2. Script kann nichts damit anfangen:
> 
> Script 1:
> 
> $con = connectionaufbau
> $db  = verbindung mit Datenbank
> 
> echo "<a href=\"script2.phtml?con=$con&db=$db\">Test</a>
> 
> Script 2:
> 
> diverse DB-Abfragen
> 
> hat vielleicht jemand eine Idee wie soetwas gemacht werden kann?
 
Datenbankverbindungen (sowie Resourcen wie Netzwerk-Sockets oder
offene Dateien i.a.) sind an den jeweiligen Prozess gebunden und
können nicht einfach 'mitgenommen' werden

php4 bietet zwar persistente Datenbankverbindungen, doch auch die
beziehen sich nur jeweils auf einen Webserver-Prozess und dienen
nur dazu, den Overhead bei der Verbindungsaufnahme zu minimieren

da aber ein Request von einem beliebigen Serverprozess, in einem
Serverpool vielleicht sogar auf einer anderen Maschine, bearbeitet
werden kann, ist eine Übergabe von Datei- oder Verbindungshandles
als Parameter vergebene Liebesmüh

ich weis, dass Java Servlet Sessions sich da anders verhalten,
aber das auch nur, weil die Servlet-Engine als einzelner Prozess
für alle Webserver-Prozesse gemeinsam agiert, und das mit allen
damit verbundenen Problemen, die man durch die Prozessverteilung
eigentlich vermeiden wollte:

- Fehlverhalten bei der Verarbeitung eines Requests beinträchtigt
  alle Sessions
- Speicherprobleme (wer glaubt hier noch an das Märchen von der
  Garbage Collection :)
- Riesenaufwand, wenn eine Verteilung über mehrere Server nötig 
  wird

....

deshalb wirst du wohl nicht darum herumkommen, die Verbindungen
in jedem Request neu zu öffenen (evtl. ***_pconnect() wg.
Performance)


--
Harmut Holzgraefe        hholzgra_(at)_media-engineering.de


php::bar PHP Wiki   -   Listenarchive