Der MySQL-Server ist verschwunden – 60 Sekunden von dem entfernt, was erwartet wurde.
In diesem Artikel wird erläutert, was dazu geführt hat, dass der MySQL-Server eine Abfrage durchlaufen hat das 120 Sekunden gedauert hat Problem, das nach 60 Sekunden abbricht und einen Fehler auslöst. Obwohl die Abfrage einwandfrei lief, wurde dieser Fehler durch ein Problem im PHP-Skript verursacht.
Problemsymptome
Systemkonfiguration
Analyse
Nachdem wir die Ausgabe von SHOW VARIABLES überprüft haben, haben wir festgestellt, dass wait_timeout auf 28800 (480 Minuten) gesetzt wurde, der Fehler jedoch weiterhin besteht. Dies zeigt, dass wait_timeout nicht das Problem ist.
Lösung
Die Ursache des Problems ist die PHP-Option mysql.connect_timeout. Diese Option wird nicht nur für Verbindungs-Timeouts verwendet, sondern auch zum Warten auf die erste Antwort vom Server. Da die Abfragedauer auf 120 Sekunden und mysql.connect_timeout standardmäßig auf 60 Sekunden eingestellt ist, schließt der Server die Verbindung nach 60 Sekunden, was den Fehler verursacht.
Dieses Problem wurde behoben, indem mysql.connect_timeout auf mindestens 120 Sekunden erhöht wurde. Dies wird mit dem folgenden Code erreicht:
ini_set('mysql.connect_timeout', 300); ini_set('default_socket_timeout', 300);
Dadurch wird mysql.connect_timeout auf 300 Sekunden erhöht, wodurch vermieden wird, dass die Verbindung vorzeitig geschlossen wird, während auf die Antwort des Servers gewartet wird.
Das obige ist der detaillierte Inhalt vonWarum läuft meine MySQL-Abfrage nach 60 Sekunden ab, obwohl „wait_timeout' viel höher ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!