1

私は約100ユーザーのクローズドコミュニティサイト(PHPベース)で作業しています。実装した機能の1つは、ユーザーがログインしたときにサイトのフロントページで「チャットルーム」として機能するajaxシャウトボックスです。チームはコラボレーションにプライベートircサーバーを使用しており、1つのチャネルでクイズボットを実行しています。私たちは、私たちのサイトを介してircに接続するためのWebインターフェイスを作成して、私たちのサイトのすべての(技術に精通していない)ユーザーが私たちのircクイズに参加できるようにするというアイデアを思いつきました。

今、私はIRCの専門家ではありませんが、いくつかのPHP-IRCチュートリアルを調べました。IRCに接続するには、PHPが開いた接続を維持する必要があるようです。コメットスタイルのトリックを実行し、タイムアウトせずにPHPスクリプトを実行させます。ただし、これは、ユーザーがページから移動したり、タブを閉じたりすると、そのphp実行の制御が失われることを意味します。これが発生した場合に接続を停止する方法を考え出すことはできますが、それでも、ユーザーがチャットルームに戻った場合は、ircに再接続する必要があります。

私たちが達成したいのは、ユーザーがサイトにログインしていなくても、ユーザーがircサーバーに永続的に接続できるようにする方法です。開発チームはすべて、サーバーの1つにシェルアカウントを持っており、screenとirssiを使用して接続を維持しています。常にircに接続されているシェルアカウントを介してphpスクリプトをircに接続することはどういうわけか可能であると思います。ユーザー数が限られているため、すべてのユーザーにシェルアカウントを設定することは問題ありませんが、欠落しているリンク(何らかの方法でphpアクセスを許可するコマンドラインircクライアント)をまだ把握していません。

誰か提案がありますか?

4

1 に答える 1

1

1つのオプションは、基本的にIRCサーバーへの接続を維持するプロキシであるBNCを実行することであり、PHPスクリプトは必要なときにそれに接続できます。BNCソフトウェアに対するユーザーのPHPセッションを識別する方法を設定したり、セッションタイムアウトを設定したりする必要があります。これらはすべて、使用している特定のソフトウェアとその使用可能なオプションによって異なります。

あるいは、Pythonなどで特別な目的のプロキシを作成することや、PHPセッションのIRC接続のリストを維持するものを作成することはそれほど難しくありません。

また、PHPセッションごとに1つのIRC接続が必要ない場合もあります。IRCチャネル上の単一の永続的なボット接続では、メッセージを送信したPHPユーザーを識別するユーザー名を各メッセージに簡単に含めることができます。

于 2010-08-13T04:20:43.793 に答える