Timeout bei MySQL connect/request

Hi,

Datenbank: MySQL Version 4.0.11-gamma
System: Windows 98 SE
PHP: 4.2.3

Mein Problem ist folgendes: Starte ich die MySql-Datenbank, so kommt es immer wieder vor, dass erst nach ca. einer halben Minute die Datenbank aktiviert ist. Genauso auch beim Beenden der Datenbanksoftware.
Außerdem tritt auch bei request über z.B: eigene Scripts, phpmyadmin,… in unregelmäßigen Abständen ein Timeout auf - mit der Fehlermeldung : „Fatal error: Maximum execution time of 30 seconds exceeded in e:\foo\bar.php on line …“.

In der DCLP-FAQ habe ich folgendes gefunden, kann aber leider nichts damit anfangen:
16.4. Windows: Jeder Zugriff auf meine Datenbank dauert eine halbe Minute!
http://www.dclp-faq.de/q/q-db-langsam.html

Hat jemand eine Lösung für mein Problem oder könnte mir jemand erklären, was mit dem Artikel in der FAQ gemeint ist?

Vielen Dank
dome

Hi dome,

Datenbank: MySQL Version 4.0.11-gamma
System: Windows 98 SE
PHP: 4.2.3

Was spricht gegen ein Update auf die aktuelle 4.0.14?

Mein Problem ist folgendes: Starte ich die MySql-Datenbank, so
kommt es immer wieder vor, dass erst nach ca. einer halben
Minute die Datenbank aktiviert ist. Genauso auch beim Beenden
der Datenbanksoftware.

Normales Verhalten. Die Datenbank wird initialisiert usw. Je nach Rechnerkonfiguration und Speicherausbau dauert das mal mehr oder weniger lange. Ausserdem müssen noch entsprechende Resourcen (sochets / ports) vom System zugeteilt werden.
Beim Beenden läufts halt umgekehrt. DB-Prozesse beenden und Ressourcen wieder freigeben.

Außerdem tritt auch bei request über z.B: eigene Scripts,
phpmyadmin,… in unregelmäßigen Abständen ein Timeout auf -
mit der Fehlermeldung : „Fatal error: Maximum execution time
of 30 seconds exceeded in e:\foo\bar.php on line …“.

Dieser ‚Fehler‘ liegt nicht an der Datenbank. Er wird von php ‚verursacht‘ und besagt nur, dass Dein php-Script die maximal erlaubte Laufzeit von 30 sec. überschritten hat und zwangsbeendet wurde.
Abhilfe: Direkt im php-Script:

set\_time\_limit(ErlaubteLaufzeitInSekunden);

oder in der php.ini den Parameter max_execution_time entsprechend anpassen.

In der DCLP-FAQ habe ich folgendes gefunden, kann aber leider
nichts damit anfangen:
16.4. Windows: Jeder Zugriff auf meine Datenbank dauert eine
halbe Minute!
http://www.dclp-faq.de/q/q-db-langsam.html

Dieser Artikel besagt, dass es zu Problemen führen kann, wenn Hostnamen, die man verwendet, nicht sauber per DNS aufgelöst werden können. --> Falls das überhaupt ein Problem bei Dir darstellt, kannst Du testweise die von Dir in den Scripten verwendeten Hostnamen durch feste IP-Adressen ersetzten.

Viele Grüße
Thomas

Hi Thomas,

Was spricht gegen ein Update auf die aktuelle 4.0.14?

Zeitmangel… :wink: Ne, ne, eigentlich spricht nichts dagegen…

Normales Verhalten. Die Datenbank wird initialisiert usw. Je
nach Rechnerkonfiguration und Speicherausbau dauert das mal
mehr oder weniger lange. Ausserdem müssen noch entsprechende
Resourcen (sochets / ports) vom System zugeteilt werden.
Beim Beenden läufts halt umgekehrt. DB-Prozesse beenden und
Ressourcen wieder freigeben.

Ok. Es hat mich halt nur verwundert, dass es manchmal sehr schnell geht und manchmal dauert es eine Ewigkeit (egal ob beim Starten oder Beenden). Aber über längere Start/Beendenzeiten kann ich notfalls hinwegsehen, aber über das Problem von unten …

Dieser ‚Fehler‘ liegt nicht an der Datenbank. Er wird von php
‚verursacht‘ und besagt nur, dass Dein php-Script die maximal
erlaubte Laufzeit von 30 sec. überschritten hat und
zwangsbeendet wurde.

Nur ist es so, dass dieser Timeout nur auftritt, wenn ein DB-Request mit ausgeführt wird. Also muss es doch etwas mit der DB zu tun haben. Oder andere Frage, warum trat überhaupt dieser Timeout auf und warum tritt er manchmal nicht auf - bei denselben Scripts.

Abhilfe: Direkt im
php-Script:

set_time_limit(ErlaubteLaufzeitInSekunden);

oder in der php.ini den Parameter max_execution_time
entsprechend anpassen.

Das beendet das Script zwar schneller, aber der DB-Request wird dann nicht ausgeführt.

Dieser Artikel besagt, dass es zu Problemen führen kann, wenn
Hostnamen, die man verwendet, nicht sauber per DNS aufgelöst
werden können. --> Falls das überhaupt ein Problem bei Dir
darstellt, kannst Du testweise die von Dir in den Scripten
verwendeten Hostnamen durch feste IP-Adressen ersetzten.

Das werde ich mal versuchen.

Vielen Dank
dome

Nur ist es so, dass dieser Timeout nur auftritt, wenn ein
DB-Request mit ausgeführt wird. Also muss es doch etwas mit
der DB zu tun haben. Oder andere Frage, warum trat überhaupt
dieser Timeout auf und warum tritt er manchmal nicht auf - bei
denselben Scripts.

MySQL und Win 98 sind eine *ähem* unglückliche Kombination.
Wir hatten ähnliche Effekte auf einem Testrechner mit MySQL 3.23 und Win 98.

Unter NT 4 oder XP Pro tauchen solche Probleme nicht auf.

Stefan