Maison >développement back-end >tutoriel php >Pourquoi une requête MySQL expire-t-elle désormais après 60 secondes alors qu'elle s'exécutait avec succès ?

Pourquoi une requête MySQL expire-t-elle désormais après 60 secondes alors qu'elle s'exécutait avec succès ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-18 22:12:03607parcourir

Why does a MySQL query now time out after 60 seconds when it used to execute successfully?

Problème de délai d'expiration de 60 secondes sur MySQL Server

Cet article explore un problème dans lequel une requête MySQL qui réussissait auparavant expire désormais après 60 secondes , affichant le message d'erreur "Le serveur MySQL a disparu." Bien que la requête elle-même soit lente, elle a toujours fait partie d'un travail de nuit et n'a jamais posé de problème jusqu'à récemment.

Symptômes du problème

  • La requête cale pendant exactement 60 secondes avant d'expirer.
  • Le problème est reproductible en exécutant l'instruction "SELECT SLEEP(120);" depuis PHP.
  • La même instruction s'exécute avec succès lorsqu'elle est exécutée à partir d'un client MySQL.
  • Ajuster la variable "wait_timeout" à 28 800 secondes ne résout pas le problème.

Causes possibles

  • Les ressources limitées, telles que le processeur ou la mémoire, ne sont pas une cause probable puisque le problème expire toujours au bout de 60 secondes exactement.
  • A la cause potentielle pourrait être un paramètre incorrect plutôt qu'une limitation des ressources.

Dépannage

Le paramètre PHP par défaut "mysql.connect_timeout" s'avère être la racine de la question. Ce paramètre contrôle non seulement le délai d'attente de connexion mais également le temps d'attente de la réponse initiale du serveur.

Solution

Pour augmenter le temps d'attente, la configuration PHP suivante peut être utilisé :

ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300); 

Cette modification augmentera le temps d'attente à la valeur spécifiée, permettant à la requête de se terminer sans expiration.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn