Wissensdatenbank
1 000 FAQs, 500 Anleitungen und erläuternde Videos. Hier gibt es nur Lösungen!
Die Verbindungszeiten zu MySQL/MariaDB verstehen
Dieser technische Leitfaden beschreibt die Ressourcenbeschränkungen für die Webhosting-Angebote von Infomaniak. Um die Ursache für Script-Unterbrechungen zu verstehen, ist es wichtig, zwischen der Echtzeit (Uhrzeit) und der Rechenzeit (Prozessor) zu unterscheiden.
1. MySQL-Verbindungszeit (I/O)
Grenzwert: 30 Sekunden (tatsächliche Zeit)
Dieser Grenzwert entspricht der absoluten, tatsächlich verstrichenen Zeit (gemessen mit einer Stoppuhr). Er betrifft die Kommunikation zwischen PHP und dem Datenbankserver (MySQL/MariaDB).
Sobald eine Verbindung hergestellt wurde, räumt der Datenbankserver maximal 30 Sekunden Zeit ein, um die Anfrage zu empfangen, auszuführen und die Ergebnisse zurückzugeben. Wenn dieser Zeitraum überschritten wird (oft aufgrund einer schlecht optimierten SQL-Abfrage), trennt der MySQL-Server die Verbindung abrupt. Dies führt in der Regel zu dem Fehler MySQL server has gone away.
2. PHP-Verarbeitungszeit (CPU)
Limit: 10 Sekunden CPU-Zeit
Diese Begrenzung bezieht sich ausschließlich auf die Rechenleistung, die der Webserver für die Ausführung von PHP-Code benötigt.
Es ist wichtig zu beachten, dass die Wartezeit nicht mitgezählt wird. Wenn PHP auf eine Antwort von der Datenbank wartet, pausiert es und verbraucht kaum CPU-Zeit. Daher wird ein Skript nur dann vom Webserver unterbrochen, wenn es über einen kumulierten Zeitraum von mehr als 10 Sekunden intensive Berechnungen durchführt (komplexe Schleifen, Kryptografie, Dateiverarbeitung).
Zusammenwirken der beiden Limits
Um die Stabilität der Anwendung zu gewährleisten, muss jede Operation gleichzeitig diese beiden unterschiedlichen Bedingungen erfüllen:
- Die Anwendung hat insgesamt 30 Sekunden Zeit, um mit der Datenbank zu interagieren (Netzwerk-Latenz + SQL-Ausführung).
- Die Anwendung verfügt über 10 Sekunden reine Rechenzeit zur Verarbeitung der empfangenen Daten.
Beispiel für eine korrekte Funktionsweise: Ein Skript, das 25 Sekunden auf eine komplexe Antwort von MySQL (I/O) wartet und das Ergebnis dann 2 Sekunden lang verarbeitet (CPU), funktioniert einwandfrei, da es keines der beiden individuellen Limits überschritten hat, auch wenn die Gesamtzeit 27 Sekunden beträgt.
Link zu dieser FAQ: https://faq.infomaniak.com/481
War diese FAQ nützlich?