react-parallel / event-loop
🌀🌉🌀 将事件循环桥接到 ext-parallel 事件
1.2.0
2020-12-19 16:47 UTC
Requires
- php: ^7.4
- ext-parallel: *
- react/event-loop: ^1.1
- react/promise: ^2.7
- reactivex/rxphp: ^2.0
- wyrihaximus/constants: ^1.6.0
- wyrihaximus/metrics: ^1.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-20 23:03:39 UTC
README
安装
要通过 Composer 安装,请使用以下命令,它将自动检测最新版本并将其与 ~
绑定。
composer require react-parallel/event-loop
使用方法
设置
就像 ReactPHP 事件循环一样,您应该只有一个桥梁。您可以有多个,但与 ReactPHP 事件循环不同,这将是可行的,但当你有超过几个时,它将增加额外的开销。为不同的主要上下文保留几个。共享此桥梁,以便其他包可以使用它们,并且只有一个实例检查事件。
use React\EventLoop\Factory; use ReactParallel\EventLoop\EventLoopBridge; $loop = Factory::create(); $eventLoopBridge = new EventLoopBridge($loop); $loop->run();
通道
通道通常有消息流通过它们,因此桥梁将它们转换为可观察对象。
use parallel\Channel; use React\EventLoop\Factory; use ReactParallel\EventLoop\EventLoopBridge; $loop = Factory::create(); $eventLoopBridge = new EventLoopBridge($loop); $channel = new Channel(Channel::Infinite); $eventLoopBridge->observe($channel)->subscribe(function (string $message) { echo $message, PHP_EOL; }); $loop->futureTick(function () use ($channel): void { $channel->send('Hello World!'); $channel->close(); }); $loop->run();
未来
承诺是推送的,而未来是拉取的,因此事件循环将在有结果可用时轮询并解决承诺。
use parallel\Channel; use React\EventLoop\Factory; use ReactParallel\EventLoop\EventLoopBridge; use function parallel\run; $loop = Factory::create(); $eventLoopBridge = new EventLoopBridge($loop); $future = run(function (): string { return 'Hello World!'; }); $channel = new Channel(Channel::Infinite); $eventLoopBridge->await($future)->then(function (string $message) { echo $message, PHP_EOL; }); $loop->run();
度量
此包通过 wyrihaximus/metrics
支持度量。
use React\EventLoop\Factory; use ReactParallel\EventLoop\EventLoopBridge; use ReactParallel\EventLoop\Metrics; use WyriHaximus\Metrics\Configuration; use WyriHaximus\Metrics\InMemory\Registry; $loop = Factory::create(); $eventLoopBridge = (new EventLoopBridge($loop))->withMetrics(Metrics::create(new Registry(Configuration::create())));
贡献
有关详细信息,请参阅 CONTRIBUTING。
许可
版权所有 2024 Cees-Jan Kiewiet
兹特此授予任何获取此软件及其相关文档副本(“软件”)的人免费使用该软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向提供软件的人提供这样做,但受以下条件约束
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论源于合同、侵权或其他原因,与软件或软件的使用或其他交易有关。