php - 如何在PHP中使用异步IO(用于IRC客户端)?

标签 php multithreading io command-line-interface irc

我正在尝试用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/

    相关文章:

    php - 随机变量时 undefined offset ?

    php - 包含日期和时间的字段不会与 Laravel 中的另一个进行比较

    javascript - 如何使用 js 或 jquery 将选项组合传递到 PHP 表单

    ios - 合并多个子托管对象上下文

    file - 如何从文件中删除最后 N 个字节

    javascript - 登录失败后如何保持模态窗口打开?

    multithreading - 如何在 perl 中将嵌套的 for 循环转换为多线程程序

    c# - 时间限制 C# 中的方法

    macos - OS X 中的低优先级 I/O

    python - 如何在python源代码中检测I/O(I/O的标准库方式)