Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP mysql_connect définit wait_timeout

Il n'est pas bon de s'accrocher aux connexions à la base de données pendant de longues périodes car la base de données ne fournit qu'un nombre fixe de connexions à la fois ; si vous en utilisez une depuis des lustres, cela signifie que votre base de données a moins de capacité à traiter d'autres requêtes, même si vous ne faites rien avec cette connexion.

Je suggère d'abandonner la connexion si le programme a fini de l'utiliser pour le moment, et de se reconnecter le moment venu pour faire plus de travail sur la base de données.

De plus, cette solution protégera votre programme d'une éventuelle indisponibilité de la base de données, c'est-à-dire si vous devez redémarrer votre serveur de base de données (cela arrive, même dans le meilleur réseau pris en charge). Si vous maintenez la connexion active (c'est-à-dire un ping DB selon les autres réponses), un événement comme celui-ci vous laissera exactement le même problème que vous avez maintenant. Avec une connexion correctement gérée qui est abandonnée lorsqu'elle n'est pas nécessaire, vous pouvez laisser votre démon fonctionner en toute sécurité même si vous avez prévu des temps d'arrêt sur votre base de données ; tant qu'il reste inactif pendant toute la durée, cela n'a pas besoin d'être plus sage.

(en passant, je remettrais également en question la sagesse d'écrire un programme PHP qui s'exécute en continu; PHP est conçu pour une demande Web de courte durée. Il peut être capable d'exécuter des programmes démons à long terme, mais il existe de meilleurs outils pour le travail)