當前位置: 妍妍網 > 碼農

視訊教程 | 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();