Mailinglisten-Archive |
* Norbert Pfeiffer wrote:
> - verwendest Du pconnect($host, $user, $pass);
> bleibt die Verbindung zu MySQL erhalten.
Im Falle des Apache aber nur im gleichen httpd-Prozess:
Apache
|
|--> Apache (A)
|
|--> Apache (B)
|
|--> Apache (C)
|
.
.
.
Kommt der erste Request auf Apache Prozess A, wird
dort eine MySQL-Verbindung erzeugt und nach Beenden
des Requests beibehalten:
Apache
|
(HUP) |--> Apache (A)
|
|--> Apache (B)
|
|--> Apache (C)
|
.
.
.
(HUP != HangUp, sondern Tripel aus DB-Host, DB-User
und DB-Passwort)
Kommt ein zweiter Request zufällig auf den _gleichen_
Apache-Prozess und erzeugt das PHP-Script einen Connect
zur Datenbank mit den _gleichen_ DB-Parametern, so kann
diese DB-Connection verwendet werden.
Landet der Request auf einem anderen Apache-Prozess, der
noch keine Verbindung zu MySQL hat, muß eine neue erzeugt
werden. Gleiches gilt, wenn der Request zwar zum Apache-
Prozess A gelangt, das PHP-Script jedoch ein Tripel H2U2P2
zur Datenbank connected.
D.h. du hast im ungünstigsten Fall MaxClients * Anzahl
der unterschiedlich vorkommenden User/Passwort-Kombinationen
mysqld-Prozesse, was dir die Maschine in den Swap-Space
und damit in den Tod treiben kann.
http://www.koehntopp.de/kris/artikel/webtune/ erklärt
das ganz schön; bei http://www.php.net/manual/de/features.persistent-connections.php
wird es IMHO nicht so schön erklärt.
(Man korrigiere mich.)
--
PHP Schulungen und | International PHP Conference
Schulungsmaterial: | 05. - 07.11.2001
http://thinkphp.de/ | Astron Hotel, Frankfurt
http://rent-a-phpwizard.de/schulungen.php | http://www.php-kongress.de/
php::bar PHP Wiki - Listenarchive