我正在尝试用PHP构建一个小的命令行IRC客户端,因为我已经厌倦了所有那些让您单击二十个GUI弹出窗口/窗口来连接到新服务器的客户端。
到目前为止,一切工作正常,但是我受制于主循环,该主循环将我的输入命令/消息发送到服务器并从中接收新数据。
由于PHP并非对多任务友好,因此我同时运行了两个自治的PHP脚本:
输入阅读器,我可以在其中输入消息-将当前消息存储在文本文件中。服务器监听器/写入器,它接收新数据并读取和清除输入阅读器将我的当前命令存储在其中的文本文件。
但是,我用来从服务器读取新数据的fgets()会暂停脚本,直到有新内容出现为止。因此,输入的文本文件要等到服务器上有新的东西才能读出来,这是不好的。
最佳答案
尝试: stream_set_blocking($handle,0)
php仅forking不支持线程,但是它占用更多资源并且需要os支持(Windows不支持)。
如果要使用php和线程,则可以查看phlanger-这是.net的php(重新)实现(因此在目标平台上需要.net或mono)。
关于php - 如何在PHP中使用异步IO(用于IRC客户端)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11603676/