2010-08-13 2 views

Antwort

15

Unterstützung dafür wurde in PHP 5.3 eingeführt. Für Versionen davor sind PDO und - Gott bewahre - die mysql-Erweiterung die einzigen Optionen.

die manual zitieren:

Anders als bei der MySQL-Erweiterung mysqli bietet keine separate Funktion für persistente Verbindungen zu öffnen. Um eine persistente Verbindung zu öffnen, müssen Sie beim Verbinden p: dem Hostnamen vorangehen.

+0

Also für Pre 5.3, was ist ein Hack oder Workaround? – Pacerier

8

Ich störe mich nicht mit persistenten Verbindungen in MySQL. Persistente Verbindungen sind für Datenbanken wie Oracle, in denen eine neue Verbindung viel langsamer ist.

In MySQL ist das Herstellen einer Verbindung relativ schnell (besonders, wenn Sie Reverse-DNS-Lookups deaktivieren). Es sollte keine persistenten Verbindungen mit MySQL geben. Wenn Ihre App performancekritisch ist, gibt es Unmengen von Dingen, die Sie mit mehr Geld für Ihr Geld tun können, als sich Sorgen um dauerhafte Verbindungen zu machen.

Darüber hinaus kommen dauerhafte Verbindungen mit unbeabsichtigten Nebenwirkungen. Wenn Sie MySQL-Variablen, temporäre Tabellen, den Zeichensatz einer Verbindung ändern oder vergessen, Transaktionen abzuschließen, können Sie Probleme verursachen. Beispielsweise könnten Sie die privaten Daten eines Benutzers der PHP-Sitzung eines anderen Benutzers zugänglich machen, weil Sie eine temporäre Tabelle am Leben erhalten.

+0

Lesen Sie die Handbuchseite, zu der ich verlinkt habe. Nach jeder PHP-Anfrage gibt es Aufräumarbeiten. Aber ja, die meiste Zeit, die es persistente Verbindungen verwendet, wird es nicht wert sein. – Artefacto

+0

Danke, das ist beruhigend. –

4

Eigentlich gibt es persistent support für mysqli-Bibliothek. Setzen Sie einfach "p:" dem Hostnamen voran und Sie sind fertig.

+0

Wie wird "p:" dem Hostnamen vorangestellt? Beispiel: \t \t \t $ this-> mysqli = neuer mysqli (mysql_host, mysql_user, mysql_password, mysql_database); –

+4

@JavaNewb: Entschuldigung für die Auferstehung eines alten Threads, aber wir haben eine Frage unbeantwortet gelassen! Ich "p: p:" mit String-Verkettung. Beispiel: $ this-> mysqli = new mysqli ('p:'. Mysql_host, mysql_user, mysql_password, mysql_database); –

+0

Dies ist eine vollkommen gute Lösung. Hat super für mich gearbeitet! – zmonteca