Swoole 中毫秒定时器(Timer)的使用,php swoole毫秒定时器,Swoole\Timer

函数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());
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑漆#000000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值