J'ai du mal à utiliser la classe mysqli en PHP et je n'ai pas réussi à trouver la réponse nulle part.Problème PHP de reconnexion mysqli
Dans mon script, une classe crée une connexion mysqli qu'elle utilise tout au long de ses fonctions. Ensuite, ce script fige. La connexion est également utilisée par les enfants, mais je rencontre le problème de la fermeture de la connexion (MYSQL Server Has Gone Away) dans le parent lorsque les enfants meurent. Avant de passer à mysqli (je n'utilisais que mysql), j'ai simplement appelé mysql_ping pour m'assurer que la connexion db était là avant d'exécuter la requête dans le processus parent. Mysqli a une fonction ping similaire MAIS il ne se reconnecte pas réellement si la connexion a disparu. J'ai essayé d'utiliser le paramètre global mysqli.reconnect = ON sans succès (en utilisant php.ini et ini_set). La fonction mysql_connect de php vous permet de récupérer une connexion déjà existante, donc si j'utilisais mysql au lieu de mysqli, je pourrais simplement réutiliser la connexion dans l'enfant juste après le processus forké. MAIS mysqli ne semble pas avoir une telle fonctionnalité ...
La seule chose que j'ai pu faire était d'appeler mysqli-> ping() et si cela renvoyait faux, puis de se reconnecter à la base de données dans le parent. C'est terriblement inefficace, et je préfèrerais savoir comment le faire correctement avec mysqli (et pas besoin de reconnexion manuelle) pour revenir à mysql.
Des suggestions?
Cela a fonctionné. Je n'ai pas réalisé que vous ne pouviez pas utiliser ini_set pour modifier cette variable, et étant le génie que je suis, j'ai ajouté la ligne à php.ini avant, ne sachant pas qu'il y avait déjà une ligne mysli.reconnect = Off plus bas fichier. Mais supprimer celui-là et simplement utiliser mysqli.reconnect a fonctionné et fait que mysqli-> ping() fonctionne exactement comme mysql_ping. Merci pour l'aide! –