revolt / event-loop
为并发PHP应用程序提供坚固的事件循环。
v1.0.6
2023-11-30 05:34 UTC
Requires
- php: >=8.1
Requires (Dev)
- ext-json: *
- jetbrains/phpstorm-stubs: ^2019.3
- phpunit/phpunit: ^9
- psalm/phar: ^5.15
README
Revolt是为并发PHP应用程序提供坚固的事件循环。常规PHP应用程序的大部分时间都在等待I/O。虽然PHP是单线程的,但可以使用协作多任务处理来允许并发,通过使用等待时间来做不同的事情。
PHP的传统同步执行流程易于理解。一次只做一件事。如果你查询数据库,你发送查询并等待数据库服务器的响应。一旦你得到响应,你就可以开始做下一件事。
Amp、ReactPHP和其他库已经为PHP提供了很长时间的协作多任务处理。然而,它们的事件驱动特性与许多现有接口不兼容,需要不同的思维模式。PHP 8.1内置了fibers,这提供了协作多线程。调用可以是同步的,无需承诺或回调,同时仍然允许非阻塞I/O。
每个使用协作多任务处理的应用程序都需要一个单独的调度器(也称为事件循环),这个包提供了这个调度器。Revolt是结合了Amp和ReactPHP事件循环实现多年的经验的结果。然而,它不是一个完整的框架,用于编写并发PHP应用程序,而只是提供了一个必要的公共基础。可以在其之上构建不同的(强烈)有偏见的库,并且Amp和ReactPHP将继续共存。
安装
人们可能会惊讶地发现,PHP标准库已经包含了我们编写事件驱动和非阻塞应用程序所需的一切。此包可以作为PHP 8.1及更高版本上的Composer依赖项安装。
composer require revolt/event-loop
具有许多并发文件描述符的应用程序需要扩展之一。
版本
revolt/event-loop
遵循semver语义版本规范。
许可证
MIT许可证(MIT)。请参阅LICENSE
文件以获取更多信息。