函数tick:设置一个间隔时钟定时器,这个定时器会持续触发
函数after():在指定的时间后执行函数。一次性定时器,执行完成后会自动销毁。
函数clear():使用定时器 ID 来删除定时器。(只作用于当前进程)
函数clearAll():清除当前 Worker 进程内的所有定时器。
函数info():返回 timer 的信息
函数list():返回定时器迭代器, 可使用foreach遍历全局所有timer的id
函数stat():查看定时器状态。
函数set():设置定时器相关参数。
// 1. 函数tick:设置一个间隔时钟定时器,这个定时器会持续触发
// int Swoole\Timer::tick(int $msec, callable $callback, ...$params);
// $mesc:指定时间,单位毫秒
// $callback_function:时间到期后所执行的函数,必须是可以调用的
// $params:给执行函数传递数据
//
// function callbackFunction(int $timer_id, ...$params);
// timer_id 定时器的ID,可用于Timer::clear清除此定时器
// $params 由Timer::tick传入的第三个参数$param,此参数也为可选参数
//
// 每三秒说个哈喽
$timer1 = \Swoole\Timer::tick(3000, function () {
echo "Hello, 1 \n";
});
// 每三秒说个哈喽后,对面出现新人 每4秒回应个okk
\Swoole\Timer::tick(3000, function ($timer_id, $param1, $param2) {
echo "Hello. $timer_id\n";
\Swoole\Timer::tick(4000, function ($timer_id) {
echo "okkkk. $timer_id\n";
});
}, "param1", "param2");
// 2. 函数after():在指定的时间后执行函数。一次性定时器,执行完成后会自动销毁。
// int Swoole\Timer::after(int $after_time_ms, callable $callback_function, ...$params);
\Swoole\Timer::after(3000, function() {
echo "Hello. \n";
});
// 3. 函数clear():使用定时器 ID 来删除定时器。(只作用于当前进程)
// bool Swoole\Timer::clear(int $timer_id);
// $timer_id:定时器ID,调用Timer::tick、Timer::after后会返回一个整数的ID
var_dump(\Swoole\Timer::info($timer1));
// 4. 函数clearAll():清除当前 Worker 进程内的所有定时器。
// bool Timer::clearAll();
var_dump(\Swoole\Timer::clearAll());
// 5. 函数info():返回 timer 的信息。
// array Timer::info(int $id);
var_dump(\Swoole\Timer::info($timer1));
// 6. 函数list():返回定时器迭代器, 可使用foreach遍历全局所有timer的id
// Timer\Iterator Timer::list();
foreach (\Swoole\Timer::list() as $timer_id) {
var_dump(\Swoole\Timer::info($timer_id));
}
// 7. 函数stat():查看定时器状态。
// array Timer::stats()
var_dump(\Swoole\Timer::stats());
// 8. 函数set():设置定时器相关参数。
// function Timer::set(array $array);
// 默认定时器在执行回调函数时会自动创建协程,可单独设置定时器关闭协程。
\Swoole\Timer::set([
'enable_coroutine' => false,
]);
// 三个人每三秒说一次Hello,10秒后闭嘴
$timer1 = \Swoole\Timer::tick(3000, function () {
echo "Hello, 1 \n";
});
$timer2 = \Swoole\Timer::tick(3000, function () {
echo "Hello, 2 \n";
});
$timer3 = \Swoole\Timer::tick(3000, function () {
echo "Hello, 3 \n";
});
// 一次性定时器,执行完成后会自动销毁。
\Swoole\Timer::after(10000, function() use ($timer1,$timer2,$timer3) {
var_dump(\Swoole\Timer::info($timer1));
// var_dump(\Swoole\Timer::clear($timer1));
// var_dump(\Swoole\Timer::clear($timer2));
// var_dump(\Swoole\Timer::clear($timer3));
var_dump(\Swoole\Timer::clearAll());
});