2012-07-22 58 views
2

我想在PHP中構建一個小命令行IRC客戶端,因爲我厭倦了所有這些客戶端,通過點擊20個GUI彈出窗口/窗口來連接到新服務器。如何在PHP中使用異步IO(用於IRC客戶端)?

一切工作到目前爲止,但我堅持主循環發送我的輸入命令/消息到服務器,並從它接收新的數據。

由於PHP是不是非常的多任務型我有在同一時間運行兩個獨立的PHP腳本:

輸入讀者在那裏我可以進入我的消息 - 它在一個文本文件中存儲當前消息。接收新數據並讀取並清除輸入閱讀器存儲我的當前命令的文本文件的服務器監聽器/寫入器。

但是,用於從服務器讀取新數據的fgets()暫停腳本,新來的。所以輸入的文本文件不能被讀出,直到從服務器得到新的東西,這是不好的。

  • 是否有一些特殊的功能/選項可以幫助我?
+1

雖然不是你的問題的答案:irssi是一個偉大的命令行irc客戶端。 – jli 2012-07-22 20:28:34

+0

我知道irssi。我沒有做這個項目,只是因爲找不到任何普通的客戶端,更多的是因爲我想了解更多關於如何將PHP用於cli應用程序,例如客戶端等。 – 2012-07-22 20:30:48

+1

是的,這很酷,只是第一句話表明你正在尋找一個客戶。 – jli 2012-07-22 20:32:37

回答

0

嘗試:stream_set_blocking($handle,0)

線程不會在PHP只forking支持,但需要使用更多的資源,需要操作系統支持(Windows不支持它)。

如果你想使用一個PHP和線程,你可以看看phlanger - 這是一個php(重新)實現.net(所以你需要在目標平臺上的.net或mono)。