webEdition: Bestehende Datenbankverbindung nutzen

In webEdition kann man viel machen, es ermöglicht einem wirklich sehr große Freiheit. Der große Vorteil diese Freiheit hat aber auch einen großen Nachteil: Man muss sich im System auskennen, um damit wirklich gute Seiten bauen zu können; ganz schnell kann man auch sehr langsame Seiten erstellen, die dann nicht nur den Besucher, sondern vor allem den Kunden verärgern.

Aus einem aktuellen Projekt stelle ich eine wirklich böse Fehlerquelle vor: Die mehrfache Datenbank Verbindung. Im Template ist es recht einfach, eine neue DB-Verbindung mit der bekannten (und veralteten) Funktion

$db = mysql_connect(...);

zu erstellen. Aber warum sollte man das machen? Wohl nur aus Unwissenheit, dass webEdition bereits eine Datenbankverbindung eröffnet hat und diese auch dem Entwickler bereitstellt.

Also, liebe webEdition-Entwickler, die bestehende, persistente und performantere DB-Verbindung könnt ihr recht einfach für eigene Zwecke benutzen:

$db = $GLOBALS['DB_WE'];
$stmt = $db->query('SELECT * FROM tblUser');
while ($data = mysql_fetch_assoc($stmt)) {
Zend_Debug::dump($data);
}

Muss man dann doch mal eine zweite Verbindung aufbauen – was im Einzelfall manchmal wirklich sein muss – dann ist dem Entwickler ja meist bewusst, was er da macht und ich hoffe, er benutzt dann dafür nicht die alten, langsamen MySQL-Funktionen, sondern entweder die MySQLi-Pendants oder eine PDO-Schnittstelle.

Leider stellt webEdition keine Instanz von Zend_Db bereit, so dass zwar die Generierung des Querys OOP stattfindet, aber es dannach mit den bekannten mysql-Funktinen weitergeht. Das ist ein recht großer Nachteil, da es die Möglichkeit nimmt, auf einem modernen (aktuellen) Niveau zu arbeiten und ich hoffe, dass dieses Manko bald durch ein aktuelles Release behoben wird.

4 Gedanken zu „webEdition: Bestehende Datenbankverbindung nutzen

  1. Anonymous

    Abgesehen davon, dass ein manueller Aufruf von mysql_connect() wirklich kein guter Stil ist, verwendet diese Funktion eine bereits bestehende Verbindung automatisch, wenn die bereits bestehende Verbindung die selben Verbindungsparameter nutzt.
    Eine zweite Verbindung wird also nicht aufgebaut.
    Siehe Manual

    Antworten
  2. Sascha Presnac

    Das Problem ist nun, dass beim manuellen zweiten mysql_connect exakt die gleichen Infos benutzt werden müssen, sonst liefert mysql_connect eine neue ID, mehr dazu im nächsten Beitrag.

    Antworten
  3. Anonymous

    Jep, wobei die Verbindungsparameter wohl in den meisten Fällen aus einer Konfigurations-Komponente stammen. Sollten diese Parameter noch hart im Quellcode stehen, ist eine zweite Verbindung wohl das geringste Problem dieser Applikation 😉

    Antworten

Schreibe einen Kommentar zu Sascha Presnac Antworten abbrechen

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