2010-08-13 79 views
1

我正在使用一个大约有100个用户的封闭社区网站(基于PHP),我们实现的功能之一是一个ajax吼吼箱,用作网站上的“聊天室”用户登录时的首页。开发团队正在使用专用的irc服务器进行协作,在一个频道中,我们正在运行quizbot。我们想出了一个想法,试图通过我们的网站建立一个连接到irc的网络界面,所以我们网站的所有(非技术精通)用户都可以参加我们的irc测验。PHP和IRC和壳

现在,我不是IRC专家,但我已经研究了几个PHP-IRC教程,并且在我看来,为了连接到IRC,PHP需要保持一个开放的连接..这意味着我们需要做一个彗星风格的技巧,让PHP脚本在没有超时的情况下执行。但是,这意味着如果用户离开页面或关闭标签页,我们会失去对该php执行的控制。如果发生这种情况,我们大概可以找出一种方法来停止连接,但即使如此,如果用户返回聊天室,也必须重新连接到irc。

我们想要达到的目标是让用户永远连接到irc服务器,即使他们没有登录到网站。开发团队在我们的一台服务器上都有shell帐户,我们使用screen和irssi保持连接。我认为它应该是有点可能有一个PHP脚本连接到IRC通过总是连接到IRC的外壳帐户。由于我们的用户数量有限,为所有用户设置shell accoutns并不是问题,但我还没有弄清楚缺少的链接 - 一个允许以某种方式访问​​php的命令行irc客户端。

任何人有任何建议吗?

回答

1

一个选项是运行一个BNC,基本上这个代理将保持与IRC服务器的连接,并且您的PHP脚本可以在需要时连接到它。您需要设置一种方法来识别用户对BNC软件的PHP会话,设置会话超时等,这些都将取决于您使用的特定软件及其可用选项。

或者,在Python中编写特殊用途代理或者维护PHP会话的IRC连接列表时不会很难。

您也许不希望每个PHP会话都有一个IRC连接,IRC频道上的单个持久僵尸连接可以轻松地在每条消息中包含一个用户名,标识发送它的PHP用户。

+1

我在想同样的事情。一个irc bot将信息传递到/来自站点,每个信息都以网络用户的用户名作为前缀。 我最近看了一下http://phergie.org/“Phergie”,看起来很有趣。 无论如何,你需要一个连续的irc连接才能工作。 – Fanis 2010-08-13 10:01:00