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及更高版本上。
示例