Dieser Artikel teilt Ihnen hauptsächlich den speicherresidenten PHP-Programm-MySQL-Fehler mit, der in der CLI-Umgebung verschwunden ist, und die Kommunikation Die TCP-Verbindungen zwischen dem Client und dem MySQL-Server sind instabil.
Die Gründe für die Instabilität können folgende sein:
MySQL-Server trennt die Verbindung automatisch innerhalb einer bestimmten Zeitspanne
PHP Wenn das Programm auf eine Leerlaufzeit stößt und längere Zeit keine MySQL-Anfragen erfolgen, unterbricht MySQL-Server auch die Verbindung, um Ressourcen zu recyceln
In anderen Fällen , führen Sie den Kill-Prozess im MySQL-Server aus, um eine bestimmte Verbindung zu beenden, und starten Sie den MySQL-Server neu
Netzwerk-Jitter
Zu diesem Zeitpunkt Die MySQL-Verbindung im PHP-Programm schlägt fehl. Wenn mysql_query weiterhin ausgeführt wird, wird ein MySQL server has gone away
-Fehler gemeldet. Wenn das Programm damit nicht umgehen kann, tritt direkt ein schwerwiegender Fehler auf und es wird beendet. Daher muss das PHP-Programm die Verbindung trennen und erneut herstellen.
Viele Leute haben die mysql_ping
Lösung vorgeschlagen, die darin besteht, jedes Mal eine Verbindungserkennung oder eine geplante Verbindungserkennung durchzuführen mysql_query
.
Diese Lösung ist nicht die beste. Der Grund ist: mysql_ping
Es muss die Verbindung aktiv erkannt werden, was zusätzlichen Verbrauch mit sich bringt. Das regelmäßige Ausführen von mysql_ping
kann das Problem nicht lösen. Beispielsweise wird die Verbindung unmittelbar nach der Ausführung der mysql_ping
erneut ausgeführt mysql_query
kehrt erfolgreich zurück, dann ist die Verbindung gültig und dies ist ein normaler Anruf. mysql_query
2006/2013(这2个错误表示连接失败)
Viele bekannte PHP-residente Prozess-Frameworksmysql_connect
mysql_connect
mysql_query
mysql_query
Abfragemethode in swoole_framework.
$res = mysql_query($sql, $this->conn);if ($res === false) { if (mysql_errno($this->conn) == 2006 or mysql_errno($this->conn) == 2013) { $r = $this->checkConnection(); if ($r === true) { continue; } }
protected function execute($query, $parameters = "") { try { ... } catch (PDOException $e) { // 服务端断开时重连一次 if ($e->errorInfo[1] == 2006 || $e->errorInfo[1] == 2013) { $this->closeConnection(); $this->connect(); ... } }
Fügen Sie
zur Datenbankkonfigurationsdatei hinzu und alles ist in Ordnung.V5.0.6+
Verwandte Empfehlungen: application/databases.php
// 开启断线重连'break_reconnect' => true,
Das speicherresidente PHP-Programm mysql meldet einen Fehler
Das obige ist der detaillierte Inhalt vonPHP-Programm MySQL-Fehler MySQL ist verschwunden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!