2010-08-13 2 views
1

Я работаю с закрытым сайтом сообщества (на основе PHP) из примерно 100 пользователей, а одна из реализованных нами функций - это ajax shoutbox, который работает как «чат» на сайте frontpage, когда пользователи вошли в систему. Команда разработчиков использует частный irc-сервер для совместной работы, а в одном канале мы запускаем quizbot. Мы придумали идею попытаться создать веб-интерфейс для подключения к irc через наш сайт, поэтому все (нетехнологичные) пользователи нашего сайта могут участвовать в наших викторинах irc.PHP и IRC и оболочки

Теперь я не эксперт IRC, но я изучил несколько учебников по PHP-IRC, и мне кажется, что для того, чтобы подключиться к IRC, PHP должен поддерживать открытое соединение .. что означает что нам нужно сделать трюк в стиле кометы и позволить скрипту PHP без тайм-аута. Однако это означает, что если пользователь переходит от страницы или закрывает вкладку, мы теряем контроль над этим выполнением php. Вероятно, мы могли бы найти способ остановить соединение, если это произойдет, но даже при этом пользователь должен будет снова подключиться к irc, если он перейдет обратно в чат.

То, что мы хотим достичь, - это способ, которым пользователи могут постоянно подключаться к серверу irc, даже если они не вошли на сайт. Команда разработчиков имеет учетные записи на одном из наших серверов, и мы используем экран и irssi, чтобы оставаться на связи. Я полагаю, что как-то возможно, чтобы скрипт php подключался к irc через учетную запись оболочки, которая всегда подключена к irc. Из-за нашего ограниченного числа пользователей нет проблем с настройкой оболочки для всех из них, но я еще не понял недостающую ссылку - клиент командной строки irc, который каким-то образом разрешает доступ к php.

У кого-нибудь есть предложения?

ответ

1

Одним из вариантов было бы запустить BNC, в основном прокси-сервер, который будет поддерживать соединения с IRC-сервером, и ваш PHP-скрипт может подключиться к нему, когда это необходимо. Вам нужно будет настроить способ идентификации сеанса PHP пользователя в программном обеспечении BNC, установить тайм-ауты сеанса и т. Д., Которые будут зависеть от конкретного используемого вами программного обеспечения и его доступных параметров.

В качестве альтернативы, было бы трудно написать прокси-сервер специального назначения, говорящий на Python, или что-то, что будет поддерживать список IRC-соединений для сеансов PHP.

Возможно, вам также не понадобится одно соединение IRC на сеанс PHP, одно постоянное бот-соединение на канале IRC может легко включать имя пользователя в каждое сообщение, идентифицирующее пользователя PHP, который его отправил.

+1

Я думал об одном и том же. Один irc-бот для передачи болтовни на/с сайта, префикс каждого сообщения с именем пользователя веб-пользователя. В последнее время я немного посмотрел на http://phergie.org/ «Phergie», и это выглядит довольно интересно. В любом случае вам нужно непрерывное соединение для работы irc. – Fanis

Смежные вопросы