Ehekrise bei PHP 5.3 und MySQL?
Kommentare

Immer wieder beschweren sich User in den IIS-Foren, dass PHP 5.3 sich selbst in simpelsten Skripten weigert, mit MySQL in Kontakt zu treten. Der Bösewicht scheint schnell gefunden: Microsoft war’s. Und

Immer wieder beschweren sich User in den IIS-Foren, dass PHP 5.3 sich selbst in simpelsten Skripten weigert, mit MySQL in Kontakt zu treten. Der Bösewicht scheint schnell gefunden: Microsoft war’s. Und wenn nicht die, dann eben PHP. Doch in Wahrheit hat sich wohl der Schiri verpfiffen.

Das ist es zumindest, was Don Raman in seinem Artikel PHP 5.3 and MySQL connectivity problem in Microsofts IIS-Blog erklärt. Schuld an allem Übel ist IPv6 und der vom MySQL-Team verwendeten Funktion mysql_real_connect(). Das Problem sei, so Don, dass MySQL IPv6 nicht unterstütze. So the limitation (or no support for IPV6 or whatever word may be used to describe this situation) is coming from MySQL database limitation. So now it is clear that this is not a PHP bug in the sense that nothing can be changed in PHP code base to fix it.

Nun wäre es naheliegend, den üblichen Verdächtigen die Schuld in die Schuhe zu schieben. Doch auch Microsofts IIS kann nichts für die Verständigungsprobleme der beiden Systeme. Auch hier gibt es ein Problem mit der Funktion mysql_real_connect(). Sie verwende lediglich die erste aus der Host-Datei zurückgegebene IP-Adresse. Scheitert der Versuch des Verbindungsaufbaus, so wird ein Fehler gemeldet. Ungünstigerweise wird zumindest unter Windows der localhost mit zwei IP-Adressen gemappt: einmal mit der IPv4-Variante und einmal mit IPv6. Nachtigall, ick hör dir trapsen.

This can be fixed and I believe a patch is already lying in some development branch of MySQL and please follow MySQL release to know which version has this fix integrated. I do not have any idea about that. But an important thing is that this bug can surface on any OS where you have above condition satisfied for the host file. Yes WINDOWS, Ubuntu, Solaris all will and may get impacted. So this means that this is not a problem with Windows OS or for that reason any other OS.Don Raman, 2010

Zwei Möglichkeiten gäbe es nun, auf dem IIS dafür zu sorgen, dass sich PHP 5.3 und MySQL wieder vertragen. Zum einen könne man IPv6 deaktivieren, zum anderen in den Skripten localhost durch die IP-Adresse 127.0.0.1 ersetzen. Warum das generell eine gute Idee ist, erklärt Kanwaljeet Singla in einem anderen Blog-Post: Impact of name resolution on mysql_connect performance. Während 10 mysql_connect()-Aufrufe mit dem Namen des Hosts volle 3,14003 Sekunden in Anspruch nahmen, konnte die Verwendung der entsprechenden IP-Adresse die Ausführungszeit auf 0,01396 Sekunden drücken. Ein solches Szenario dürfte in der Realität zwar kaum eintreten, dennoch ist es ein interessanter Denkanstoss dafür, in Zukunft vielleicht doch lieber die IP-Adresse anstatt des Hostnames zu verwenden.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -