Maison > Article > base de données > Pourquoi ma requête MySQL expire-t-elle après 60 secondes, même si le « wait_timeout » est beaucoup plus élevé ?
Le serveur MySQL a disparu - à 60 secondes de ce qui était attendu
Cet article explique ce qui a poussé le serveur MySQL à effectuer une requête qui a duré 120 secondes. Problème qui expire après 60 secondes et génère une erreur. Bien que la requête fonctionnait correctement, un problème dans le script PHP a provoqué cette erreur.
Symptômes du problème
Configuration du système
Analyse
Après avoir vérifié la sortie SHOW VARIABLES, nous avons constaté que wait_timeout a été défini sur 28800 (480 minutes), mais l'erreur existe toujours. Cela montre que wait_timeout n'est pas le problème.
Solution
La cause du problème est l'option PHP mysql.connect_timeout. Cette option est utilisée non seulement pour les délais de connexion mais également pour attendre la première réponse du serveur. Étant donné que la durée de la requête est définie sur 120 secondes et que mysql.connect_timeout est défini sur 60 secondes par défaut, le serveur ferme la connexion après 60 secondes, provoquant l'erreur.
Résolu ce problème en augmentant mysql.connect_timeout à au moins 120 secondes. Ceci est réalisé avec le code suivant :
ini_set('mysql.connect_timeout', 300); ini_set('default_socket_timeout', 300);
Cela augmente mysql.connect_timeout à 300 secondes, évitant ainsi de fermer prématurément la connexion en attendant la réponse du serveur.
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!