loner/reactor

事件反应器,用于事件的侦听与响应,可处理事件:信号、流读写、定时器。

v1.0.3 2022-02-24 06:08 UTC

This package is auto-updated.

Last update: 2024-05-24 16:07:45 UTC


README

事件反应器,用于事件的侦听与响应,可处理事件:信号、流读写、定时器。

运行环境

  • PHP >= 8.0 && PHP < 9.0

安装

composer require loner/reactor

应用说明

  • 创建实例

    <?php
    
    use Loner\Reactor\Builder;
    
    // composer 自加载,路径视具体情况而定
    require __DIR__ . '/vendor/autoload.php';
    
    // 事件反应驱动对象
    $reactor = Builder::create();
  • 事件侦听

    • 添加优先任务(下次事件循环优先处理)

      $reactor->addSooner(callable $listener): void;
        # 内部回调
        $listener();
    • 套接字读

      # 增/改
      $reactor->setRead(resource $stream, callable $listener): bool;
        # 内部回调
        $listener(resource $stream);
      
      # 删
      $reactor->delRead(resource $stream): bool;
    • 套接字写

      # 增/改
      $reactor->setWrite(resource $stream, callable $listener): bool;
        # 内部回调
        $listener(resource $stream);
      
      # 删
      $reactor->delWrite(resource $stream): bool;
    • 信号

      # 增/改
      $reactor->setSignal(int $signal, callable $listener): bool;
        # 内部回调
        $listener($signal);
      
      # 删
      $reactor->delSignal(int $signal): bool;
    • 定时器

      # 增:秒数、回调、是否周期性
      # Loner\Reactor\Timer\Timer
      $reactor->addTimer(float $interval, callable $listener, bool $periodic = false): Timer;
        # 内部回调
        $listener(Timer $timer);
      
      # 删
      $reactor->delTimer(Timer $timer): bool;
    • 定时任务

      # 增:回调、时间规则(分、时、日、月、周,缺省由 * 代替)
      # Loner\Reactor\Crontab\Crontab
      $reactor->addCrontab(callable $listener, string ...$timeRules): Crontab;
        # 内部回调
        $listener(Crontab $crontab);
      
      # 删
      $reactor->addCrontab(Crontab $crontab): bool;
  • 事件轮询

    $reactor->loop(): void;
  • 退出事件轮询

    $reactor->destroy(): void;