anpera.net
https://anpera.dyndns.org/phpbb3/

mysql_connect vs mysql_pconnect
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=5044
Seite 1 von 1

Autor:  Lori [ Do 10 Dez, 2009 20:24 ]
Betreff des Beitrags:  mysql_connect vs mysql_pconnect

Ich hab mal ne Verständnisfrage ^^

Ich hab mir gerade die Beschreibungen von mysql_connect und mysql_pconnect durchgelesen und stehe nun vor der Frage, was besser ist.

mysql_connect: Es wird eine Verbindung hergestellt und mit Ende des PHP-Scriptes geschlossen. Das heißt mit jedem Aufruf wird eine neue Verbindung hergestellt. Falls eine Verbindung mit den gleichen Daten da ist, wird die gleiche Kennung gesendet.

mysql_pconnect: Es wird eine Verbindung hergestellt, die nicht mit mysql_close geschlossen wird, sondern per Timeout.

Welches ist effektiver und vor allem sicherer?

PS: In der common.php wird zwar db_pconnect definiert, aber in der dbwrapper.php ist mysql_connect drin.

Autor:  anpera [ Fr 11 Dez, 2009 09:19 ]
Betreff des Beitrags:  Re: mysql_connect vs mysql_pconnect

Lori hat geschrieben:
Welches ist effektiver und vor allem sicherer?
Das kommt immer auf den Verwendungszweck an.
Lori hat geschrieben:
In der common.php wird zwar db_pconnect definiert, aber in der dbwrapper.php ist mysql_connect drin.
Das liegt daran, dass LoGD ursprünglich mit pconnect programmiert wurde, das sich aber im Betrieb vor allem mit sehr vielen Benutzern auf einigen (Windiws?-)Servern als nicht praktikabel herausgestellt hat. LoGD ist ein Browserspiel, bei dem sehr viele User zu Stoßzeiten (Tageswechsel) sehr oft hintereinander (Waldkämpfe) das selbe Script ausführen. Da kam es mit pconnect vor, dass die Datenbank neue Verbindungen verweigerte. Mit dem Löschen eines P war das Problem unglaublich schnell behoben. :D

Autor:  Lori [ Fr 11 Dez, 2009 10:37 ]
Betreff des Beitrags:  Re: mysql_connect vs mysql_pconnect

Nun, inzwischen hat sich LogD sehr geändert. Sie werden mehr und mehr zu RP-Servern, da sich die Level-User doch eher für die Bildvariante entscheiden und zu anderen MMORPG-Spielen wie WoW, FlyfF und ähnlichen wechseln. Das heißt so viele Zugriffe gleichzeitig finden nicht wirklich mehr statt.

Nun, nehmen wir an, mein Server hat 200 User insgesamt, von denen um die 60/70 maximal gleichzeitig online sind, aber zu 2/3 reine RP-Spieler sind. Welches von beiden wäre dann effektiver? Mysql_connect, welches zwar ebenfalls schaut, ob eine bestehende Verbindung existiert, aber bei Scriptende grundsätzlich die Verbindung trennt? Oder doch mysql_pconnect, welches auch nach einer bestehenden Verbindung sucht, aber nur per Timeout die Verbindung beendet (ist bei mir scheinbar auf 1 Minute eingestellt, wie ich der aus der phpinfo() entnehmen konnte - mysql.connect_timeout = 60).

Autor:  dragonslayer [ So 13 Dez, 2009 01:10 ]
Betreff des Beitrags:  Re: mysql_connect vs mysql_pconnect

Das kan dir deine Serverkonfiguration beantworten.
Wenn zu Stosszeiten 60-70 Leute online sind, müssen im ungünstigsten Fall auch 60-70 Verbindungen für MySQL offen gehalten werden. Folglich muss in der my.cnf, der MySQL Konfigurationsdatei festgelegt sein, dass auch mindestens diese Zahl an Verbindungen erreicht werden kann. Dabei ist auch zu beachten, dass mit jeder offen gehaltenen verbindung RAM belegt wird und zwar ne ganze Menge. Daraus folgt evtl. Swapping, laberrhabarber...

Ganz ehrlich, bleib bei mysql_connect, es ist die für lotgd performanteste Art und Weise sich mit mysql zu verbinden.

Autor:  Lori [ So 13 Dez, 2009 12:44 ]
Betreff des Beitrags:  Re: mysql_connect vs mysql_pconnect

Hmmmm ... da muss so einiges dazu eingestellt sein:

mysql.allow_persistent ... ist bei mir auf an
mysql.max_persistent ... ist bei mir auf unlimited (ich nehme an, das ist das was du meinst ;) )

Aber schon alleine, um meinen Hoster nicht zu Ärgern werde ich bei mysql_connect bleiben ;)

Mich hats nur interessiert, ob es von der Effektivität (Schnelligkeit, Sicherheit etc) her besser ist.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/