2010-08-13 74 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