2010-08-13 3 views
1

약 100 명의 사용자가있는 닫힌 커뮤니티 사이트 (PHP 기반)로 작업하고 있으며 우리가 구현 한 기능 중 하나는 사이트에서 "chatroom"으로 작동하는 ajax shoutbox입니다 사용자가 로그인했을 때의 FrontPage. dev 팀은 공동 작업을 위해 개인용 irc 서버를 사용하고 있으며 한 채널에서 퀴즈 봇을 실행하고 있습니다. 우리는 사이트를 통해 irc에 연결하기위한 웹 인터페이스를 만들려는 아이디어를 생각해 냈습니다. 그래서 우리 사이트의 모든 (기술에 익숙하지 않은) 모든 사용자가 irc 퀴즈에 참여할 수 있습니다.PHP와 IRC 및 쉘

저는 IRC 전문가가 아니지만 몇 가지 PHP-IRC 자습서를 살펴 보았습니다. IRC에 연결하기 위해 PHP는 열린 연결을 유지해야합니다. 우리는 혜성 스타일의 트릭을하고 PHP 스크립트가 시간 초과없이 실행되도록해야합니다. 그러나 사용자가 페이지에서 빠져 나오거나 탭을 닫으면 PHP 실행 제어가 느슨해집니다. 이 경우 연결을 중지 할 수있는 방법을 찾아 낼 수는 있지만 chatroom으로 돌아 가면 사용자가 irc에 다시 연결해야합니다.

우리가 달성하고 싶은 것은 사용자가 사이트에 로그인하지 않아도 irc 서버에 영구적으로 연결되는 방법입니다. 개발자 팀은 모두 서버 중 하나에 쉘 계정을 가지고 있으며 화면과 irssi를 사용하여 연결 상태를 유지합니다. 나는 어떻게 든 irc에 항상 연결된 셸 계정을 통해 irc에 연결하는 PHP 스크립트를 가질 수 있어야한다고 생각합니다. 우리의 제한된 사용자 수 때문에, 그것들 모두를위한 쉘 accoutns를 설정하는 것은 문제가 아니지만, 나는 PHP 링크를 어떤 식 으로든 허용하는 명령 행 irc 클라이언트 인 누락 된 링크를 아직 알지 못했습니다.

누구든지 의견이 있으십니까?

답변

1

하나의 옵션은 기본적으로 BNC을 실행하는 것으로, 기본적으로 IRC 서버에 대한 연결을 유지하는 프록시이며 PHP 스크립트는 필요할 때 연결할 수 있습니다. BNC 소프트웨어에 대한 사용자의 PHP 세션을 식별하고 세션 시간 초과 등을 설정하는 방법을 설정해야합니다.이 시간 제한은 모두 사용하는 특정 소프트웨어 및 사용 가능한 옵션에 따라 다릅니다.

또는 파이썬이나 PHP 세션에 대한 IRC 연결 목록을 유지하는 특수 목적 프록시를 작성하는 것이 그리 어렵지 않을 것입니다.

PHP 세션 당 하나의 IRC 연결을 원하지 않을 수도 있습니다. IRC 채널의 단일 영구적 인 봇 연결은 각 메시지에 사용자 이름을 포함하여 PHP 사용자를 식별 할 수 있습니다.

+1

나는 똑같은 생각을하고있었습니다. 사이트로 /로부터 채팅을 릴레이하는 irc bot 하나. 각 메시지 앞에 웹 사용자의 사용자 이름이 붙습니다. 최근에 http://phergie.org/ "Phergie"를 조금 봤는데 꽤 재미있을 것 같습니다. 어쨌든 irc가 작동하려면 연속 연결이 필요합니다. – Fanis