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