【问题标题】:How to use async IO (for IRC client) in PHP?如何在 PHP 中使用异步 IO(用于 IRC 客户端)?
【发布时间】:2012-07-22 20:17:25
【问题描述】:

我正在尝试用 PHP 构建一个小的命令行 IRC 客户端,因为我厌倦了所有这些客户端让你点击 20 个 GUI 弹出窗口/窗口来连接到新服务器。

到目前为止一切正常,但我卡在将输入命令/消息发送到服务器并从中接收新数据的主循环中。

由于 PHP 对多任务不太友好,我有两个同时运行的自主 PHP 脚本:

我可以输入消息的输入阅读器 - 它将当前消息存储在文本文件中。服务器侦听器/写入器接收新数据并读取和清除输入读取器存储我当前命令的文本文件。

但是,我用来从服务器读取新数据的 fgets() 会暂停脚本,直到有新数据到达。所以在服务器有新的东西到达之前,输入文本文件不能被读出,这是不好的。

  • 有什么特殊的功能/选项可以帮助我吗?

【问题讨论】:

  • 虽然不能回答你的问题:irssi 是一个很棒的命令行 irc 客户端。
  • 我知道 irssi。我不做这个项目只是因为我找不到任何普通的客户端,更多的是因为我想了解更多关于将 PHP 用于 cli 应用程序的信息,比如客户端等。
  • 是的,这很酷,只是您的第一句话表明您正在寻找客户。

标签: php multithreading io command-line-interface irc


【解决方案1】:

试试:stream_set_blocking($handle,0)

只有 php 不支持线程 forking,但这会占用更多资源并需要操作系统支持(Windows 不支持)。

如果您想使用 php 和线程,您可以查看 phlanger - 这是 .net 的 php(重新)实现(因此您需要在目标平台上使用 .net 或 mono)。

【讨论】:

    猜你喜欢
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多