Mailinglisten-Archive |
From: "Andreas Zaugg - CAB Services AG" <webmaster_(at)_cabag.ch>
> Ich habe eine
> for($i=0... schleife
> und rufe von dort aus eine Funktion auf.
> In der Funktion mache ich eine Abfrage auf die DB
>
> Was ist jetzt besser:
> - Ich Connecte in der Funktion (Mehrmals connecten und wieder schliessen)
> oder
> - Ich connecte VOR der for Schleife und schliesse erst wieder nach der
> Schleife
>
> Was macht hier mehr Sinn und was belastet den Server am meisten?
Definitiv dein 2er Punkt macht mehr Sinn. Jenach verwendetem
Datenbanktyp wuerde bei deiner ersten Version riesige Resourcen
verbraucht wuerden. Oracle wuppt bei mir mit 22MB pro anfrage... man
stelle sich das mal in einer schleife vor nur um 20 Datensaetze
anzuzeigen...aarrgghh! Hinzu kommen wuerde dann auch noch das bei
gleichzeitigem Zugriff auf die Datenbank der "Watermark" steigen
koennte. Mit "Watermark" sind die gleichzeitigen Verbindungen gemeint
und daraus ergeben sich sapeter einmal die Lizenzzahlungen. Kann ein
teuerer Spass werden.
Eine weitere Moeglichkeit (sofern von der DB und PHP unterstuetzt zb.
Mysql,Oracle,Postgre usw.) waeren "persistent" Verbindungen.
Standardmaessig werden ja die Datenbankverb. nach Ablauf deines Scripts
automatisch beendet. Unter Verwendung einer staendigen ("persistent")
Verbindung bleibt der Connect erhalten und die Anmeldeprozedur beim
nachste Aufruf entfaellt und hier stellt sich dann er
Geschwindigkeitsvorteil fuer dich ein. Nachteil: Laeuft nur wenn als
Apachemodul und nicht in der CGI-Version. Wenn wenig Verkehr auf deiner
Seite ist belastest du deinen Webserver mit einer zusaetzelichen
Verbindung die ja nur selten Gebraucht wird.
Gruss
Joerg Behrens
--
Key fingerprint = 92 7D E0 A6 CF AE EC 32 14 28 EF 0D 57 2A 88 5B
----------------------------------------------------------------------
Preussag Noell Dienstleistungs GmbH
D-97080 Wuerzburg Mobil: 0171/60 57 963
Alfred-Nobel-Straße 20 Tel: +49 931 903-2243
Abt: DV-C/tr Fax: +49 931 903-2051
php::bar PHP Wiki - Listenarchive