PHP 高性能的事件循环库 Revolt

2024年 2月 1日 48.3k 0

Revolt是什么?

Revolt是并发PHP应用程序的坚如磐石的事件循环。通常的PHP应用程序将大部分时间花在等待I/O上。虽然PHP是单线程的,但可以使用协作多任务来允许并发性,方法是使用等待时间来做不同的事情。

PHP的传统同步执行流程很容易理解。一次只做一件事。如果查询数据库,则发送查询并等待数据库服务器的响应。一旦你有了答案,你就可以开始做下一件事。

ReactPHP和其他库已经在PHP中提供了很长一段时间的协作多任务。然而,它们的事件驱动特性与许多现有的接口不兼容,需要不同的思维模型。PHP 8.1内置了fibers,它提供了协作多线程。调用可以是异步的,没有promise或回调,同时仍然允许非阻塞I/O。

每个使用协同多任务的应用程序都需要一个调度器(也称为事件循环),这个包提供了这个调度器。Revolt是结合了React和ReactPHP的事件循环实现的多年经验的结果。然而,它并不是一个用于编写并发PHP应用程序的成熟框架,而只是提供了必要的公共基础。不同的(强烈的)固执己见的库可以在它的基础上构建,React和ReactPHP将继续共存。

Revolt 支持事件

  • Defer 回调在事件循环的下一次迭代中执行。如果有延迟调度,事件循环不会在迭代之间等待。
  • Delay 在指定的秒数后执行回调。秒的分数可以表示为浮点数。
  • Repeat 在指定的秒数后重复执行回调。秒的分数可以表示为浮点数。
  • Stream readable 当流上有数据要读取或连接关闭时,将执行回调。
  • Stream writable 当写缓冲区中有足够的空间来接受要写入的新数据时,就会执行回调。
  • Signal 当进程从操作系统接收到特定信号时执行回调。

安装

composer require revolt/event-loop

注意:此包可以作为Composer依赖项安装在PHP 8.1及更高版本上。

示例

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论