2 votes

Pourquoi le serveur MYSQL disparaît-il sous PHP 5.4.11, mais pas sous 5.3.17 ?

J'ai migré vers PHP 5.4.11 qui fonctionne sauf qu'il donne des erreurs "MySQL server has gone away" dans les scripts scripts à longue maintenance. PHP 5.3.17 ne faisait pas cela.

Dois-je ajouter/supprimer les directives php.ini ou my.cnf ? Dois-je mettre à jour ma classe PHP script (nous utilisons l'extension mysqli) ?

5voto

user568109 Points 21253

Vous devez vérifier le Manuel de référence MySQL sous C.5.2.9. MySQL server has gone away . Il énumère de nombreuses raisons probables pour lesquelles cela pourrait se produire. Il est mentionné sur la page :

La raison la plus fréquente pour laquelle le serveur MySQL a cessé de fonctionner est la suivante est que le serveur a dépassé le temps imparti et a fermé la connexion.

Comme vous exécutez des scripts de longue maintenance, je soupçonne que c'est la raison. Un autre point de la page :

Par défaut, le serveur ferme la connexion après l'ouverture de la session. rien ne s'est passé. Vous pouvez modifier ce délai en définissant la variable wait_timeout au démarrage de mysqld. Voir la section 5.1.4, "Variables système du serveur".

Vous pouvez essayer de régler mysqli.reconnect à 1 (dans votre php.ini), ou en augmentant la valeur de MYSQLI_OPT_CONNECT_TIMEOUT de options . Voir le mysqli config . Vous devriez également vous pencher sur les points suivants migration de 5.3 à 5.4 notes. Il est difficile d'identifier le problème sans regarder votre code.

1voto

Tom Points 162

Connect_timeout n'était pas le problème, j'ai dû modifier ma classe de requête et ajouter ce qui suit :

mysqli_options(MYSQLI_INIT_COMMAND,"SET SESSION wait_timeout=600;");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X