Avec le développement et l'utilisation continus de la technologie PHP, nous pouvons parfois rencontrer des problèmes et des erreurs. Parmi elles, la bibliothèque de fonctions MySQLi fournie par PHP est un outil couramment utilisé par les développeurs pour faire fonctionner les bases de données MySQL. Lors de l'utilisation de la fonction mysqli_query(), un message d'erreur courant peut apparaître : "Avertissement PHP : mysqli_query() : (HY000/2006) : le serveur MySQL est parti". Ce message d'erreur peut gêner notre processus de développement. Lorsque vous trouvez une erreur, vous devez trouver une solution le plus rapidement possible afin que votre code PHP puisse fonctionner correctement.
Ci-dessous, nous vous proposerons plusieurs solutions possibles.
Lorsque cette erreur se produit, vous devez d'abord revoir votre code PHP. Vérifiez s'il y a un écart trop long entre les instructions de connexion MySQLi ou si la connexion MySQLi n'est pas maintenue. Lors du traitement de grandes quantités de données, la probabilité de cette erreur est plus élevée.
Si le délai d'expiration de la connexion est trop court, la base de données MySQL fermera la connexion et affichera un message d'erreur dans le navigateur pendant le processus de connexion. Dans la plupart des cas, le fait de définir un délai d'expiration de connexion plus long réduira la fréquence de cette erreur.
Solution :
Nous pouvons utiliser la fonction ping() dans MySQLi pour maintenir l'état de la connexion et vérifier si la connexion MySQLi est normale. Cette méthode peut facilement résoudre le problème de fermeture inattendue d’une connexion.
Assurez-vous d'utiliser la syntaxe suivante dans votre code :
// Mysqli连接语句 $conn = mysqli_connect($servername, $username, $password, $dbname); // 判断数据库连接是否可用 if (mysqli_ping($conn)) { echo 'MySQL connection is still active!'; } else { echo 'MySQL connection is dead.'; }
Si la quantité de données est importante, vous pouvez augmenter le délai d'attente pour améliorer la stabilité de la connexion. Vous pouvez utiliser l'extrait de code suivant :
// 设置超时时间 (单位为秒) ini_set('mysqlI.connect_timeout', 3600); ini_set('mysqlI.default_socket_timeout', 3600);
Le message d'erreur contient non seulement le message d'erreur réel, mais peut également contenir le message d'erreur de la base de données. Nous pouvons obtenir des informations plus détaillées sur l'erreur en accédant aux journaux du serveur de base de données.
La base de données MySQL chargera les fichiers de configuration au démarrage, tels que /etc/my.cnf ou /etc/mysql/my.cnf. Les paramètres suivants doivent être ajoutés à ce fichier de configuration :
max_allowed_packet = 128M wait_timeout = 28800 innodb_flush_log_at_trx_commit = 2 innodb_buffer_pool_size = 1G
Parmi eux, max_allowed_packet peut définir la taille de transmission maximale (en octets) autorisée par une seule instruction de requête SQL. La valeur par défaut de ce paramètre est de 4 Mo, qui peut être ajustée. en conséquence selon les besoins réels. Le paramètre wait_timeout peut définir le temps d'inactivité de la connexion MySQL en secondes. Si ce temps est trop long, cela réduira les performances du serveur. S'il est raccourci, la connexion risque d'être perdue en raison d'un délai d'attente. Les paramètres innodb_flush_log_at_trx_commit et innodb_buffer_pool_size peuvent améliorer les performances et la stabilité des connexions MySQL et peuvent être ajustés en conséquence en fonction des besoins.
Si vous avez essayé toutes les méthodes ci-dessus et que vous ne parvenez toujours pas à résoudre le problème, vous pouvez enfin vérifier s'il y a un problème avec la base de données MySQL elle-même. Par exemple, vous pouvez utiliser les outils intégrés de MySQL pour le diagnostic et la réparation, tels que :
mysqlcheck -o -A
Cette commande effectuera une vérification de cohérence et une réparation sur la base de données MySQL. Cette commande nécessite des privilèges d'administrateur et vous devez être root ou un utilisateur disposant de privilèges équivalents pour exécuter cette commande.
Résumé
Voici les solutions que vous pouvez essayer lorsque vous rencontrez l'erreur « Avertissement PHP : mysqli_query() : (HY000/2006) : le serveur MySQL est parti ». MySQLi est un outil très couramment utilisé dans le développement PHP. Bien que l'apparition de telles erreurs pose de gros problèmes au développement de notre code, en utilisant les méthodes ci-dessus, vous pouvez toujours résoudre le problème en réparant et en améliorant la stabilité et la fiabilité du code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!