envoylope/event-loop

v0.1.0 2024-05-06 22:54 UTC

This package is auto-updated.

Last update: 2024-09-06 23:36:31 UTC


README

Build Status

使用 ReactPHPEventLoop 传输 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;