2010-07-16 6 views
3

J'ai un long script php qui est essentiellement une boucle infinie écoute des événements (c'est un bot xmpp), je commence le script avec nohup php bot.php &.vérifier si la connexion mysql est valide

La structure brute du script est comme

$mysqli = mysqli_connect(...); 

while(1) { 
    if(event1) { 
     // do database action 
    } else if(event2) { 
     // non database action 
     echo "something"; 
    } 
} 

Quand je lance le tout script fonctionne très bien au départ. Quand je reviens après quelques heures, le bot fonctionne bien si j'émet event2 mais échoue lors de l'émission event1 avec une erreur de base de données (PHP Fatal error: Appel à une fonction membre bind_param() sur un non-objet en ligne n)

Comment puis-je garder la connexion mysql valide ou existe-t-il un moyen de vérifier si la connexion mysqli est valide pour que je puisse me reconnecter autrement?

Répondre

5
+3

Merci, mysqli_ping travaillé. Je voudrais ajouter, j'ai dû ajouter mysqli.reconnect = On dans mon php.ini pour que la connexion soit automatiquement rétablie si elle est fermée. (Attention: ini_set ne fonctionnera pas dans ce cas !!) – Gunjan

+0

@Gunjan Merci beaucoup pour votre commentaire - cela m'a aidé à résoudre mon problème. La directive à php.ini que j'ai ajouté était 'mysqli.reconnect =" 1 "' et il n'était pas nécessaire d'ajouter '$ mysqli-ping()' au code. – user1477388

Questions connexes