epoll、kqueue、/dev/poll。。。。PHP扩展

epoll、kqueue、/dev/poll。。。。PHP扩展,php,events,epoll,Php,Events,Epoll,是否有一个PHP扩展(稳定性与此无关),它允许直接epoll、kqueue和/dev/poll轮询函数,而无需经过libevent或libev扩展?现在libevent将是PHP最稳定的功能。它支持epoll作为后端 还有一个问题。它的稳定性不如libevent,但有更好的ooapi。Inotify 您没有指定扩展应该支持哪些体系结构。但是,如果您可以使用Linux only选项,那么: 似乎有一个比较稳定的 提供类似的功能 是另一种可能的扩展 下面展示了inotify的工作原理以及如何使用

是否有一个PHP扩展(稳定性与此无关),它允许直接epoll、kqueue和/dev/poll轮询函数,而无需经过libevent或libev扩展?

现在libevent将是PHP最稳定的功能。它支持epoll作为后端

还有一个问题。它的稳定性不如libevent,但有更好的ooapi。

Inotify 您没有指定扩展应该支持哪些体系结构。但是,如果您可以使用Linux only选项,那么:

  • 似乎有一个比较稳定的
  • 提供类似的功能
是另一种可能的扩展

下面展示了inotify的工作原理以及如何使用capi

此外,从Robert Love的文章的结论来看,inotify具有非常好的性能:

inotify是一个简单但功能强大的文件更改通知系统,具有 直观的用户界面,卓越的性能,支持多种 不同的事件和众多的特点。inotify目前正在中使用 各种项目,包括高级桌面索引Beagle 系统和Gamin,FAM的替代品


是一位备受尊敬的Linux内核黑客,也是这本参考书的作者(我恰好拥有这本书)。

有一个PECL扩展,提供了类
Event
EventBase
,可以处理多种事情,也可以处理
epoll

见:

对不起,我不能提供一个样本,除了你会在链接上找到,因为我还没有与此工作

EventBase类表示libevent的事件基结构。它坚持 一组事件,可以轮询以确定哪些事件处于活动状态

每个事件库都有一个方法或后端,用于确定 哪些活动已准备就绪。公认的方法有:选择、投票、, epoll、kqueue、devpoll、evport和win32

配置要使用的事件库,或避免使用特定的后端EventConfig 类可以使用


而且已经存在了——你在尝试做什么,而这两种方法中的任何一种都无法实现?据我所知,轮询在OSI模型中是一种基础非常低的协议。因此,它不应该从基于表示级别的语言访问。你到底想实现什么?@DaveRandom Performance。。。可靠性…@DaveRandom“它旨在取代旧的POSIX select(2)和poll(2)系统调用,以在要求更高的应用程序中实现更好的性能…”-
socket_select()
select
进行系统调用。正如我提到的,我知道libevent没有一个稳定的版本,因此它确实不是一个可行的选项,也不会有任何其他不稳定的选项,因此我不知道这如何回答我的问题,更像是一个有用的注释。因此,您不会使用已经在beta中运行了4年的扩展,但是您会使用您自己编写的扩展(并且只支持epoll而不支持其他后端)?随你便。:)为什么您要使用4年多没有被积极开发的产品,并且仍然处于beta测试状态的产品级代码?对不起,我遗漏了什么吗。。libevent自2010年6月7日起被标记为稳定版本,最新版本日期为11月(2012年11月18日发布的libevent-2.0.21-stable.tar.gz),或者您正在谈论的是其他libevent吗?(libevent.org)@itsid我们正在谈论。我添加了一条评论,提到Robert Love对inotifyth的分析。这确实很有趣,它说您似乎仍然需要轮询inotify描述符,对吗?文件描述符累积了所有异步事件,因此,即使您必须阅读它才能获得事件,无论您多久检查一次,都不会丢失任何事件。Inotify不提供回调机制(我想这就是您要问的),但Inotify的文件描述符是select、poll、epoll和read。一个简单的回调系统可以通过一个专用线程轻松实现。。。我正在搜索一个扩展,该扩展不需要使用libevent或libev作为后端,并提供对epoll、kqueue或/dev/poll的直接访问,我可以用PHP直接轮询,就像您现在使用select一样,不过感谢您的响应:)