当前位置: 欣欣网 > 码农

视频教程 | Workerman基础教程-Timer类的使用

2024-02-10码农

Timer定时器

WorkerMan中Timer定时器是定时执行某个函数或者类方法。

注意:定时器是在当前进程中运行的,workerman中不会创建新的进程或者线程去运行定时器。

1、定时函数为匿名函数(闭包)

<?php
useWorkerman\Worker;
useWorkerman\Timer;
require_once__DIR__ . '/vendor/autoload.php';
$task = new Worker();
// 开启多少个进程运行定时任务,注意业务是否在多进程有并发问题
$task->count = 1;
$task->onWorkerStart = function(Worker $task)
{
// 每2.5秒执行一次
$time_interval = 2.5;
Timer::add($time_interval, function()
{
echo"task run\n";
});
};
// 运行worker
Worker::runAll();

2、只在指定进程中设置定时器

一个worker实例有4个进程,只在id编号为0的进程上设置定时器。

<?php
useWorkerman\Worker;
useWorkerman\Timer;
require_once__DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->count = 4;
$worker->onWorkerStart = function(Worker $worker)
{
// 只在id编号为0的进程上设置定时器,其它1、2、3号进程不设置定时器
if($worker->id === 0)
{
Timer::add(1function(){
echo"4个worker进程,只在0号进程设置定时器\n";
});
}
};
// 运行worker
Worker::runAll();