2010-05-11 8 views
1

J'ai créé un bot simple xmpp en PHP qui se connecte à google talk server. J'ai fondamentalement modifié l'exemple de cli_longrun. Lorsque je lance le script dans le navigateur, le bot est en ligne et reste en ligne pendant un certain temps, même après avoir fermé l'onglet sur lequel le script était exécuté (car il s'agit juste d'une boucle infinie écoutant les événements sur le flux). Mais après un certain temps, le bot devient déconnecté.garder le bot xmphp toujours en ligne

La question est de savoir comment garder le bot toujours en ligne. Une façon dont je peux penser est d'exécuter un cron qui déconnecterait le plus tôt et commencerait une nouvelle session. Mais y a-t-il une meilleure approche?

Répondre

2

Exécutez-le à partir d'une ligne de commande, tant que le script ne casse pas, il reste actif tant que l'invite est ouverte. S'il s'agit d'un hôte partagé, il est probable que des mesures soient en place pour empêcher un script de s'exécuter indéfiniment, même si vous disposez de set_time_limit (0). Vous n'avez donc pas de chance.

+1

Et même alors, à partir de la ligne de commande, vous devrez utiliser ** nohup **, sinon il pourrait se terminer après la déconnexion. La plupart des hôtes partagés mettent également fin à des processus qui durent trop longtemps. – Konerak

1

Exécutez-le à partir de la ligne de commande et assurez-vous que votre script ne se termine pas. Assurez-vous de set_time_limit à 0 pour l'empêcher de se tuer.

2

Peut également réapparaître le script avec une entrée crontab de "@reboot sleep 300; ./runbot.sh" dans votre crontab si vous avez un accès cron autorisé.

+0

oui merci. c'est définitivement un todo. Je n'arrête pas d'oublier de tels cas de bord :) – Gunjan