前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >视频教程 | Workerman基础教程-Timer类的使用

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

作者头像
Tinywan
发布2024-02-21 16:07:12
1410
发布2024-02-21 16:07:12
举报
文章被收录于专栏:开源技术小栈开源技术小栈

Timer定时器

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

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

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

代码语言:javascript
复制
<?php

use Workerman\Worker;
use Workerman\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的进程上设置定时器。

代码语言:javascript
复制
<?php

use Workerman\Worker;
use Workerman\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(1, function(){
            echo "4个worker进程,只在0号进程设置定时器\n";
        });
    }
};
// 运行worker
Worker::runAll();
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-10,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Timer定时器
  • 1、定时函数为匿名函数(闭包)
  • 2、只在指定进程中设置定时器
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com