coff / ticker
基于时钟的事件分发器
v3.0.0
2022-08-18 15:16 UTC
Requires
- php: >=8.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.10
- phpunit/phpunit: ^9.5
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();