Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Warnung: mysqli_query():Lösung
Bei der kontinuierlichen Weiterentwicklung und Nutzung der PHP-Technologie kann es manchmal zu Problemen und Fehlern kommen. Unter anderem ist die von PHP bereitgestellte MySQLi-Funktionsbibliothek ein Tool, das Entwickler häufig zum Betrieb von MySQL-Datenbanken verwenden. Bei Verwendung der Funktion mysqli_query() kann eine häufige Fehlermeldung erscheinen: „PHP-Warnung: mysqli_query(): (HY000/2006): MySQL-Server ist verschwunden.“ Diese Fehlermeldung kann unseren Entwicklungsprozess behindern. Wenn Sie einen Fehler finden, sollten Sie so schnell wie möglich eine Lösung finden, damit Ihr PHP-Code ordnungsgemäß funktionieren kann.
Im Folgenden stellen wir Ihnen mehrere mögliche Lösungen vor.
Wenn dieser Fehler auftritt, müssen Sie zunächst Ihren PHP-Code überprüfen. Überprüfen Sie, ob die Lücke zwischen MySQLi-Verbindungsanweisungen zu groß ist oder ob die MySQLi-Verbindung nicht aufrechterhalten wird. Bei der Verarbeitung großer Datenmengen ist die Wahrscheinlichkeit dieses Fehlers höher.
Wenn das Verbindungszeitlimit zu kurz eingestellt ist, schließt die MySQL-Datenbank die Verbindung und zeigt während des Verbindungsvorgangs eine Fehlermeldung im Browser an. In den meisten Fällen verringert sich die Häufigkeit dieses Fehlers, wenn das Verbindungszeitlimit länger eingestellt wird.
Lösung:
Wir können die Funktion ping() in MySQLi verwenden, um den Verbindungsstatus aufrechtzuerhalten und zu überprüfen, ob die MySQLi-Verbindung normal ist. Mit dieser Methode kann das Problem des unerwarteten Schließens einer Verbindung leicht gelöst werden.
Stellen Sie sicher, dass Sie in Ihrem Code die folgende Syntax verwenden:
// Mysqli连接语句 $conn = mysqli_connect($servername, $username, $password, $dbname); // 判断数据库连接是否可用 if (mysqli_ping($conn)) { echo 'MySQL connection is still active!'; } else { echo 'MySQL connection is dead.'; }
Wenn die Datenmenge groß ist, können Sie das Timeout erhöhen, um die Verbindungsstabilität zu verbessern. Sie können den folgenden Codeausschnitt verwenden:
// 设置超时时间 (单位为秒) ini_set('mysqlI.connect_timeout', 3600); ini_set('mysqlI.default_socket_timeout', 3600);
Die Fehlermeldung enthält nicht nur die eigentliche Fehlermeldung, sondern möglicherweise auch die Datenbankfehlermeldung. Wir können detailliertere Informationen über den Fehler erhalten, indem wir auf die Protokolle des Datenbankservers zugreifen.
Die MySQL-Datenbank lädt beim Start Konfigurationsdateien, z. B. /etc/my.cnf oder /etc/mysql/my.cnf. Die folgenden Parameter müssen zu dieser Konfigurationsdatei hinzugefügt werden:
max_allowed_packet = 128M wait_timeout = 28800 innodb_flush_log_at_trx_commit = 2 innodb_buffer_pool_size = 1G
Unter diesen kann max_allowed_packet die maximale Übertragungsgröße (in Bytes) festlegen, die von einer einzelnen SQL-Abfrageanweisung zugelassen wird. Der Standardwert dieses Parameters beträgt 4 MB und kann angepasst werden entsprechend den tatsächlichen Bedürfnissen. Der Parameter „wait_timeout“ kann die Leerlaufzeit der MySQL-Verbindung in Sekunden festlegen. Wenn diese Zeit zu lang ist, verringert sich die Leistung des Servers. Wenn sie verkürzt wird, kann die Verbindung aufgrund einer Zeitüberschreitung verloren gehen. Die Parameter innodb_flush_log_at_trx_commit und innodb_buffer_pool_size können die Leistung und Stabilität von MySQL-Verbindungen verbessern und können je nach Bedarf entsprechend angepasst werden.
Wenn Sie alle oben genannten Methoden ausprobiert haben und das Problem immer noch nicht lösen können, können Sie endlich überprüfen, ob ein Problem mit der MySQL-Datenbank selbst vorliegt. Sie können beispielsweise die in MySQL integrierten Tools zur Diagnose und Reparatur verwenden, z. B.:
mysqlcheck -o -A
Dieser Befehl führt eine Konsistenzprüfung und Reparatur der MySQL-Datenbank durch. Dieser Befehl erfordert Administratorrechte und Sie müssen Root oder ein Benutzer mit entsprechenden Rechten sein, um diesen Befehl auszuführen.
Zusammenfassung
Die oben genannten Lösungen sind die Lösungen, die Sie ausprobieren können, wenn der Fehler „PHP-Warnung: mysqli_query(): (HY000/2006): MySQL-Server ist verschwunden“ auftritt. MySQLi ist ein sehr häufig verwendetes Tool in der PHP-Entwicklung. Obwohl das Auftreten solcher Fehler unserer Codeentwicklung große Probleme bereitet, können Sie das Problem mit den oben genannten Methoden dennoch durch Reparatur lösen und die Stabilität und Zuverlässigkeit des Codes verbessern.
Das obige ist der detaillierte Inhalt vonPHP-Warnung: mysqli_query():Lösung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!