coff/ticker

基于时钟的事件分发器

v3.0.0 2022-08-18 15:16 UTC

This package is auto-updated.

Last update: 2024-09-18 20:07:41 UTC


README

简单而强大的基于时间段的的事件分发器。

功能

  • 轻量级算法 - 查看 Ticker::loop()
  • 开放架构 - 查看: TickInterface, TickableTrait
  • 自动确定主循环的睡眠时间(基于定义的时钟),以节省处理器使用 - 查看: Ticker::updateActiveTicks()
  • 支持PHP 7.2+的多线程 - 查看: https://php.ac.cn/manual/en/book.pthreads.php
  • 定义要执行的任务的多种方式
    • 回调
    • 基于特质的
    • 基于扩展类的
    • 通过工厂(用于多线程)

使用示例

基于回调

$ticker = new Ticker();

$ticker->addTick(new Tick(Time::SECOND, 1, function () {
    // do it every second
}));

$ticker->addTick(new Tick(Time::SECOND, 5, function () {
    // do it every 5 seconds
}));

$ticker->addTick(new Tick(Time::MINUTE, 1, function() {
    // do it every minute
}));

$ticker->loop();

基于扩展类

$tick = new class extends Tick {

    protected $everyN = 1;
    protected $interval = Time::HOUR;

    public function run() 
    {
        // hourly task
    }
}

$ticker = new Ticker();
$ticker->addTick($tick);
$ticker->loop();