Archiv verlassen und diese Seite im Standarddesign anzeigen : Wofür ist das gut? Was macht das?
Mal ne unwissende Frage *g*...
In der config.php befindet sich das hier:
// use persistant connections to the database
// 0 = don't use
// 1 = use
$usepconnect = 0;
Wozu is das gut? Sollte man das ausschalten oder anlassen?
Jacky
// dauerhafte Verbindung zur Datenbank benutzen
// 0 = nicht benutzen
// 1 = benutzen (empfohlen)
$usepconnect=1;Das ist die deutsche Übersetzung und die empfohlene Einstellung (1).
Wenn diese Einstellung aktiviert ist, wird die Verbindung zur Datenbank mit dem Beenden eines Skripts nicht geschlossen, sondern bleibt bestehen für einen zukünftigen Verbindungsaufbau, dies erhöht die Effizienz, kann aber auch Probleme bereiten, wenn nicht genügend Connections zur Datenbank erlaubt sind.
Genauer wird hier darauf eingegangen:
http://www.php.net/manual/de/features.persistent-connections.phpTypischerweise hat ein Multiprozess-Webserver einen Prozess (den 'Eltern' Prozess), der einen Satz weiterer Prozesse (die 'Kinder') koordiniert, welche die eigentliche Arbeit des Bereitstellens der Seiten übernehmen. Jede Anfrage, die von einem Client erfolgt, wird an einen untergeordneten Prozess, der noch keine andere Anfrage bearbeitet, weitergereicht. Das bedeutet, dass eine zweite Anfrage des gleichen Clients an den Server unter Umständen von einem anderen untergeordneten Prozess als die erste Anfrage bearbeitet wird. In diesem Fall sorgt eine persistente Verbindung dafür, dass jeder untergeordnete Prozess sich nur einmal mit dem SQL-Server verbinden muss, wenn eine solche benötigt wird. Benötigt dann eine weitere Seite die Verbindung mit dem SQL-Server, kann auf die zurückgegriffen werden, die der untergeordnete Prozess vorher hergestellt hat.
[...]
Wozu dienen persistente Verbindungen, wenn sie keine zusätzliche Funktionalität bieten?
Die Antwort ist außerordentlich einfach: Effizienz. Persistente Verbindungen sind nützlich, wenn der Aufwand für das Herstellen einer Verbindung zu einem SQL-Server hoch ist. Ob dies der Fall ist oder nicht, hängt von vielen Faktoren ab - zum Beispiel, um welche Datenbank es sich handelt, ob sie auf dem gleichen Rechner wie der Webserver läuft oder welche Last die SQL-Maschine zu bewältigen hat usw. Grundsätzlich gilt, dass, wenn viele Verbindungen hergestellt werden müssen, persistente Verbindungen außerordentlich hilfreich sind. Sie veranlassen den untergeordneten Prozess, sich während seiner gesamten Lebensdauer lediglich einmal mit dem SQL-Server zu verbinden, anstatt bei jedem Aufruf einer Seite, die eine Verbindung benötigt. Das heißt, dass jeder untergeordnete Prozess, der eine persistente Verbindung öffnet, seine eigene dauerhafte Verbindung zum Server hat. Bei 20 untergeordneten Prozessen, die ein Skript ausführen, das eine persistente Verbindung zum SQL-Server herstellt, hat man beispielsweise 20 verschiedene Verbindungen zum SQL-Server - eine für jeden untergeordneten Prozess. Mystics
Danke schön :)
Gruß
Jacky
Um die Funktin zu aktivieren reicht es dies in der config zu aktivieren, oder muss woanders noch was umgestellt werden ?
Das Aktivieren wird nicht mehr empfohlen, da es mehr Probleme verursachen kann, als wirklich der Leisteungssteigerung zu dienen.
hat irgendwer ein anwendungsbeispiel, das irgendeinen vorteil von persistenen mysql-verbindungen zeigt?
ich sehe da nämlich keinen. durch die nicht geschlossenen verbindungen wird das system höher belastet.
das für den server erträgliche limit wäre viel schneller erreicht, als bei ständig wieder geöffneten und sauber geschlossenen verbindungen.
nach meinem verständnis sollte eingentlich effizienter sein.
die zeit, die zum neuaufbau einer mysql-verbindung benötigt wird, ist ja eigentlich eher unerheblich.
s.molinari
05.05.2003, 17:31
Der Unterschied? Ich versuchs........
Mit mysql_pconnections bleibt die Verbindung zum DBServer bestehen und wenn eine neu Verbindung gebraucht wird, wird eine schon geöffnete Verbindung benutzt. (das wurde schon gesagt, ich weiss) Der Vorteil ist, ein bisschen gewonnene Zeit. Deshalb weil, MySql nicht durch die Benutzertabellen rumsuchen muss um festzustellen ob der Benutzer Zugang bekommen soll oder nicht. Laut MySql ist dieses "Check der Benutzerrechte" recht flott was pconnections für MySql fast überflüssig macht.
Der Nachteil: Mit der Zeit könnte eine viel frequentierte Site viele Verbindungen öffnen aber nicht mehr schliessen. Das führt dazu dass die maximale Anzahl an Verbindung die in MySql Eingestellt sind (100 ist Default) schnell erreicht wird was wiederum zu einem Fehler führt.
Also meine Empfehlung:
Wenn du ein Board hast.....
.....mit wenig Benutzer gleichzeitig online aber an einem shared server -> mysql_pconnect=1 (meistens auf einem shared Server sind hunderte von Datanbanken vorhanden. ohne pconnections wäre die Verbindungszeit doch relativ gross als ohne)
....mit vielen Benutzern gleichzeitig online aber an einem Shared Server -> mysql_pconnect=1 (allerdings wenn Fehlermeldungen kommen, dann ausschalten)
...mit wenig Benutzer auf einem eigenen Server ->mysql_pconnect = 0 oder 1 (ist egal)
...mit vielen Benutzern auf einem eigenen Server ->mysql_pconnect = 0 (hier ist der DB Benutzerzahl relativ klein. Dadurch ist die Überprüfung der Benutzerrechte schnell und macht, wie gesagt, den Vorteil über pconnects überflüssig)
Ich hoffe ich habe alle Szenarien abgedeckt aber ich bin mir sicher Martin liegt Einspruch ein.;) Martin?
Scott
Also da ich gerade danach gesucht habe, muss ich sagen. Verständlich! Jetzt weis ich, was es ist, und das ich es auf 0 lasse. Zumindest vorerst. Ich glaube auf meinem Server ist das generell untersagt.. Aber des liese sich ja recht fix mit vi beheben.. :D
Und Martin schweigt noch immer... ? lol
vBulletin® v3.7.4, Copyright ©2000-2008, Jelsoft Enterprises Ltd.