Zuerst ging ich schon durch verwandte Beiträge, aber ohne Glück.PHP Mysql geht nach ~ 60 Sekunden weg
Ich folgte die in MySQL server has gone away - in exactly 60 seconds bereitgestellte Lösung diese Werte am Anfang einstellen:
ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);
aber es scheint, dass der Fehler bestehen bleiben.
Der Fehler tritt auf, bevor eine Abfrage durchgeführt: die Datenbank-Klasse für die Handhabung der mysql-Operationen, führen Sie einen Ping (mysqli_ping
) um die Verbindung zu aktualisieren (das ist die Bedeutung der Verwendung von mysql Ping) aber in bestimmten Punkt, 60 ~ es wirft diese Warnung:
Warnung: mysqli_ping(): MySQL-Server weg in gegangen ist ...
gibt es etwas, das ich fehlt?
AKTUALISIERT Ich habe herausgefunden, wo genau das Problem ist.
Ich werde weiter meinen Workflow erklären. Ich stelle zwei verschiedene DB-Verbindungen her, die erste, die ich mache, dient nur zum Abrufen von Daten, und die zweite, wird verwendet, um alle erhaltenen Daten einzufügen (Zeile für Zeile). Da die zweite Verbindung die ist, die Operationen durchführt, dachte ich, dass das, das den Server produziert, verschwunden ist, aber es stellt sich heraus, dass der Fehler durch die Leerlaufverbindung (die erste) erhöht wird.
Die Problemumgehung, die ich gemacht habe, ist, die Verbindung zu schließen (die erste wegen der es nicht mehr verwendet wird), direkt nachdem die Daten abgefragt wurden.
Die zweite Verbindung hat genug Zeit, um eine Zeitüberschreitung nicht zu erreichen.
Die erste Verbindung besteht zu einer entfernten Datenbank und die zweite Verbindung zu meinem lokalen Server, so dass ich die zweite vollständig kontrollieren kann.
Das seltsame Ding mit der Verbindung, die ich mit dem entfernten MySQL-Server mache, ist, dass, wenn ich von meinem PHP-Skript nach den 60 Sekunden oder so verbinde, es die Zeitüberschreitung erreicht, aber wenn ich es von der Konsole anschließe Verbindung ist kein Zeitlimit. Weißt du, wie es mir gelungen ist, diese Zeitüberschreitung nicht zu bekommen (Server ist weg)? Wie bereits erwähnt, habe ich bereits einen Workaround, aber ich würde gerne wissen, warum PHP nach ~ 60 Sekunden aussetzt, während ich von der Konsole aus pro Stunde verbunden bleiben kann.
Führen Sie die Abfrage 'SELECT @@ WAIT_TIMEOUT; '. Der Standardwert ist 28800, aber ich erwarte, dass Sie 60 sehen werden. –