mysql_connect vs. mysql_pconnect

Es gibt durchaus Blog-Beiträge, von denen man glaubt oder hofft, dass man sie eigentlich nicht schreiben braucht, dieser ist einer davon! Da ich mich diese Woche aber mal wieder mit PHP-Skripten herumschlagen musste, muss ich dann doch mal eine Lanze brechen für mysql_pconnect!

„Früher“, als Programmierer noch drauf achten mussten, dass sie performanten Code schreiben, wurde einem als erstes eingetrichtert das bei Datei-Operationen das Öffnen und Schließen einer Datei an sich teuer ist! Entsprechend wurden in Ausnahmefällen bei Programmstart die Dateien geöffnet, und erst am Programmende wieder geschlossen.

Eine Datenbankverbindung ist ähnlich, dass öffnen und schließen der Verbindung ist teuer! Um so schlimmer, wenn ich vor einem Skript sitze, das es pro Seite auf 50 (!) Queries schafft, die allesamt einzeln die Verbindung öffnen und wieder schließen. Dies ist natürlich der Worst Case und eine sehr eigentümliche Umsetzung des OOP-Gedankens gewesen, aber zumindest wäre es nicht so schlimm gewesen, wenn man pconnect verwendet hätte!

Denn pconnect baut eine permanente Verbindung zur Datenbank auf, wohingegen der einfache connect dies natürlich nicht tut. Führe ich den Befehl mysql_close auf, ist die Verbindung geschlossen und muss bei der nächsten Abfrage wieder neu aufgebaut werden. Hat man ein pconnect verwendet, wirkt sich mysql_close erst gar nicht aus! Also: connect: teuer, pconnect: geht so! :)

Mein absoluter Favorit diesbzgl. ist übrigens vBulletin. In der Grundkonfiguration werden keine permanenten Verbindungen genutzt, man muss dies erst in der Konfiguration erst einschalten. Nicht dass das bei vBulletin etwas ausmachen würde – das meiste was ich über die Optimierung von MySQL weiß habe ich nicht mehr funktionierenden vBulletin-Seiten zur verdanken! :)

Also: Bitte benutzt permanente Datenbank-Verbindungen in PHP!

Ähnliche Beiträge

Happy birthday phphatesme.com Tja, was soll ich sagen, mein Lieblings-PHP-Blog wird 1 Jahr alt. Schon recht erstaunlich, wie schnell man sich an den Blog gewöhnt hat :) Vielleicht ...
Composer – Der Pakethandler für PHP Ich gebe zu, die Überschrift ist ein klein bisschen falsch! ;) Offiziell ist Composer ein Manager von Abhängigkeiten, und kein Pakethandler. Ein klein...
Bearbeiten von Bilderin in PHP mit PHPImageWorksho... Man kann von Drupal halten was man will, aber ich bleibe da stets bei meiner Meinung, dass die Module zur Bildmanipulationen die besten sind, die am C...
Quality Assurance für PHP Sebastian Bergmann (ja, der von phpUnit) hat in seinem Blog einen interessanten Beitrag über Quality Assurance Tools für PHP veröffentlicht. Im Einzel...

3 Antworten auf „mysql_connect vs. mysql_pconnect“

  1. Thanks, but ..

    “ Also: Bitte benutzt permanente Datenbank-Verbindungen in PHP! „, => jein !

    Bitte konfiguriert Eure Systeme so, das persistente Connections genutzt werden können.
    Und benutzt einen DB-Abstraktions-Layer wie PEAR/MDB2 => JA !

    Wenn die Konfiguration nicht auf persistente Connections geändert werden kann, dann wenigstens alle „mysql_close()“ aus dem Script verbannen, da laut PHP-Manual „mysql_connect()“ eine Verbindung aufbaut oder ‚erneut benutzt‘ ( http://de2.php.net/manual/en/function.mysql-connect.php )

    Cheers alex

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.