2010-08-13 8 views
1

Je travaille avec un site communautaire fermé (basé sur PHP) d'environ 100 utilisateurs, et l'une des fonctionnalités que nous avons implémenté est une shoutbox ajax qui fonctionne comme un "chatroom" sur le site frontpage lorsque les utilisateurs se sont connectés. L'équipe de développement utilise un serveur irc privé pour la collaboration, et dans un canal, nous exécutons un quizbot. Nous avons eu l'idée d'essayer de créer une interface web pour se connecter à irc via notre site, afin que tous les utilisateurs (non-tech-savvy) de notre site puissent participer à nos quiz irc.PHP et IRC et Shells

Maintenant, je ne suis pas un expert IRC, mais j'ai regardé quelques tutoriels PHP-IRC, et il me semble que pour se connecter à IRC, PHP doit maintenir une connexion ouverte .. ce qui signifie que nous devons faire un tour de style comète et laisser le script PHP s'exécuter sans temporisation. Cependant, cela signifie que si l'utilisateur navigue loin de la page ou ferme l'onglet, nous perdons le contrôle de cette exécution php. Nous pourrions probablement trouver un moyen d'arrêter la connexion si cela se produit, mais même si l'utilisateur doit se reconnecter à irc s'il retourne dans le salon de discussion. Ce que nous voulons réaliser est un moyen pour les utilisateurs d'être perpétuellement connectés au serveur irc, même s'ils ne sont pas connectés au site. L'équipe de développement a tous des comptes shell sur l'un de nos serveurs, et nous utilisons screen et irssi pour rester connectés. Je pense qu'il devrait être possible d'avoir un script php connecté à irc via un compte shell qui est toujours connecté à irc. En raison de notre nombre limité d'utilisateurs, ce n'est pas un problème de configurer des accoutns shell pour tous, mais je n'ai pas encore trouvé le lien manquant - un client irc en ligne de commande qui permet l'accès php d'une manière ou d'une autre.

Quelqu'un a des suggestions?

Répondre

1

Une option serait d'exécuter un BNC, essentiellement un proxy qui maintiendra les connexions au serveur IRC, et votre script PHP peut s'y connecter quand il le faut. Vous devez définir un moyen d'identifier la session PHP d'un utilisateur sur le logiciel BNC, définir des délais d'attente de session, etc. Tout dépend du logiciel spécifique que vous utilisez et de ses options disponibles.

Sinon, il ne serait pas si difficile d'écrire un proxy spécial dans Python, par exemple, ou quelque chose qui permettrait de maintenir une liste de connexions IRC pour les sessions PHP.

Vous ne voulez peut-être pas une connexion IRC par session PHP, une seule connexion bot persistante sur le canal IRC pourrait facilement inclure un nom d'utilisateur dans chaque message identifiant l'utilisateur PHP qui l'a envoyé.

+1

Je pensais à la même chose. Un bot irc pour relayer le chatter vers/depuis le site, en préfixant chaque message avec le nom d'utilisateur de l'internaute. J'ai regardé un peu dans http://phergie.org/ "Phergie" ces derniers temps et ça a l'air plutôt intéressant. Dans tous les cas, vous avez besoin d'une connexion continue pour que irc fonctionne. – Fanis