dazzle-php / loop
Dazzle 异步 I/O 事件循环。
Requires
- php: >=5.6.7
- dazzle-php/util: 0.5.*
Requires (Dev)
- phpunit/phpunit: >=4.8.0 <5.4.0
- react/event-loop: 0.4.*
Suggests
- ext-event: ~1.0
- ext-libev: *
- ext-libevent: >=0.1.0
This package is not auto-updated.
Last update: 2024-09-15 03:18:57 UTC
README
注意: 该仓库是 Dazzle 项目的一部分 Dazzle 项目 - PHP 的下一代库。项目的目的是为 PHP 开发者提供一套完整的工具来构建功能性的异步应用程序。请确保您仔细阅读附带的 README,这将确保您会对它的易用性和强大功能感到惊讶。同时,您可能还想查看我们Dazzle 仓库中的其他异步库,以全面了解 Dazzle 的体验。
描述
Dazzle Loop 是一个组件,它为在单个线程或进程中使用单个或多个循环编写 PHP 的异步代码提供抽象层。
特性亮点
Dazzle Loop 特性
- 用于在单个线程或进程中编写异步代码的接口
- 文件描述符轮询
- 一次性定时器和周期性定时器
- 延迟执行回调
- 支持基于 StreamSelect 的循环
支持基于 LibEvent 的循环,支持基于 LibEv 的循环,支持基于 ExtEvent 的循环,- 支持组合多个循环并从单个包装器中管理它们
- 支持在多个执行流程之间切换
- ReactPHP 事件循环适配器
- ReactPHP 兼容性
- ...等等。
提供的示例
快速入门
此示例展示了使用 loop 实现非阻塞时钟的方法
$loop = new Loop(); $loop->addPeriodicTimer(1, function() { printf("\rCurrent clock: %s", date('Y-m-d H:i:s')); }); $loop->start();
其他
其他示例可以在 example 目录中找到。以下是提供的示例列表,作为参考和首选阅读顺序
- 快速入门
- 使用 Loop 启动/停止事件
- 安排简单定时器
- 安排周期性定时器
- 安排带手动控制的周期性定时器
- 取消定时器
- 交替取消定时器
- 排队 tick 监听器
- 在队列的开始/结束处排队 tick 监听器
- 异步使用流 - 第 1 部分
- 异步使用流 - 第 2 部分
- 高级: 实现简单的 HTTP 服务器
如果上述任何示例让您感到困惑,请参阅 tests 目录。
比较
本节包含许多用户请求的 Dazzle 与 React 的比较。如果您想知道为什么创建了本节,请参阅 作者的说明。
性能
关于此基准的详细信息可以在 benchmark-on.php 和 benchmark-react.php 文件中找到。
内存分配效率
关于此基准的详细信息可以在 benchmark-once.php 和 benchmark-react.php 文件中找到。
详细信息
要求
Loop 需要
- PHP-5.6 或 PHP-7.0+,
- UNIX 或 Windows 操作系统。
安装
要安装此库,请确保已安装 composer,然后运行以下命令
$> composer require dazzle-php/loop
测试
可以通过以下方式运行测试
$> vendor/bin/phpunit -d memory_limit=1024M
版本控制
Dazzle库的版本控制描述在Dazzle项目的索引存储库的版本控制章节中。请参阅那里以获取关于该主题的详细信息。
贡献
感谢您考虑为这个存储库做出贡献!
- 贡献指南可以在贡献提示中找到。
- 可在问题部分找到开放的票证。
- 当前贡献者名单列在图表部分。
- 要联系作者,请查看composer.json文件中附带的联系信息。
许可证
Dazzle Loop是开源软件,采用MIT许可证。
"一切皆有可能。不可能的只是需要更长的时间。" —— 丹·布朗