envoylope / event-loop
v0.1.0
2024-05-06 22:54 UTC
Requires
- php: >=8.1
- asmblah/php-amqp-compat: ^0.4
- react/event-loop: ^1.4
Requires (Dev)
- mockery/mockery: ^1.6
- phpstan/phpstan: ^1.10
- phpstan/phpstan-mockery: ^1.1
- phpunit/phpunit: ^10.2
- tasque/event-loop: ^0.1
- tasque/tasque: ^0.1
README
使用 ReactPHP 的 EventLoop 传输 Envoylope 的 AMQP 心跳。
用法
使用 Composer 安装
$ composer require envoylope/event-loop
(可选) 安装 Tasque 和 Tasque EventLoop
如果你正在运行传统的 PHP 应用程序,ReactPHP 的 EventLoop 可能会被同步逻辑/IO 常常阻塞。这可以通过实现 PHP 的 绿色线程 的 Tasque EventLoop 部分来一定程度上缓解。
请参阅上述链接中的相应用法说明,以配置 Tasque/EventLoop Nytris 软件包。
配置平台引导配置
一旦配置了 PHP AMQP-Compat Nytris 软件包,此调度器将被使用
nytris.config.php
<?php declare(strict_types=1); use Asmblah\PhpAmqpCompat\AmqpCompatPackage; use Asmblah\PhpCodeShift\Cache\Layer\FilesystemCacheLayerFactory; use Asmblah\PhpCodeShift\ShiftPackage; use Envoylope\EventLoop\EventLoopSchedulerFactory; use Nytris\Boot\BootConfig; use Nytris\Boot\PlatformConfig; use Tasque\Core\Scheduler\ContextSwitch\TimeSliceStrategy; use Tasque\EventLoop\TasqueEventLoopPackage; use Tasque\TasquePackage; $bootConfig = new BootConfig(new PlatformConfig(__DIR__ . '/var/cache/nytris')); $bootConfig->installPackage(new AmqpCompatPackage( // Install the scheduler. schedulerFactory: new EventLoopSchedulerFactory() )); $bootConfig->installPackage(new ShiftPackage( cacheLayerFactory: new FilesystemCacheLayerFactory(), relativeSourcePaths: ['src', 'vendor'] )); $bootConfig->installPackage(new TasquePackage( new TimeSliceStrategy(timeSliceCheckIntervalTocks: 100) )); $bootConfig->installPackage(new TasqueEventLoopPackage()); return $bootConfig;