Il y a quelques jours, j’ai eu besoin de maintenir une connexion vers une base de données MySQL alors que le script PHP en ligne de commande en cours d’exécution attendait une réponse de la part de l’utilisateur sur l’entrée standard.

En effet, une connexion vers une base de données est toujours fatalement coupée par le client ou le serveur lorsqu’elle n’est pas utilisée durant un certain temps.

Or, j’avais absolument besoin que ce ne soit pas le cas, car mon script devait mettre à jour des données dans la base et il devait donc conserver un verrou sur les tables concernées tant qu’il n’avait pas finaliser cette mise à jour.

Et lors d’une déconnexion, les verrous posés sont perdus.

J’avais donc absolument besoin de maintenir la connexion entre mon script et la base de données tout au long du processus de mise à jour pour que mon script fonctionne correctement.

Cependant, afin de pouvoir effectuer cette mise à jour, j’avais besoin que l’utilisateur exécute un script sur un autre serveur pour récupérer des informations en fonction de données préalablement extraites de ma base de données.

Et comme je n’avais aucune idée du temps nécessaire à l’utilisateur pour récupérer ces informations sur cet autre serveur, mon script était donc obligé d’attendre qu’il lui indique qu’il avait effectivement récupéré les informations.

En fonction de la configuration du serveur MySQL, la connexion entre mon script et la base de données était donc susceptible d’être perdue si l’utilisateur tardait trop à répondre.