Lors de l'exécution d'opérations groupées, telles que l'insertion de centaines d'enregistrements dans une base de données MySQL, vous pouvez rencontrez l'erreur suivante :
[PDOException] SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
Cette erreur survient généralement en raison d'un problème de délai d'attente où le serveur MySQL déconnecte votre connexion après une période d'inactivité définie. Pour résoudre ce problème, concentrez-vous sur le réglage de deux paramètres principaux :
Le paramètre wait_timeout détermine la durée (en secondes) pendant laquelle MySQL attendra avant de mettre fin à une connexion inactive. Par défaut, cette valeur est définie sur une valeur relativement faible de 30 secondes sur les environnements d'hébergement partagé.
Pour augmenter le wait_timeout, émettez la requête suivante au début de votre opération :
SET session wait_timeout=28800;
Ceci La commande définit le wait_timeout sur 28 800 secondes, soit environ 8 heures.
Dans certains cas, vous devrez peut-être également ajuster le paramètre interactive_timeout. Ce paramètre spécifie le nombre de secondes avant que MySQL ne mette fin à une connexion interactive.
Pour modifier interactive_timeout, exécutez la requête suivante après avoir ajusté wait_timeout :
SET session interactive_timeout=28800;
Pour confirmer que les paramètres ont été modifiés avec succès, vous pouvez exécuter la requête suivante avant et après avoir apporté les modifications :
<code class="php">$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE);</code>
Bien que l'augmentation des paramètres de délai d'attente puisse résoudre le problème immédiat, il est important prendre en compte les éléments suivants :
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!