Gateway中想使用Timer,请问Timer该从哪里开始调用?

0

在chat中想加一个timer来定时执行一些业务。
请问从Event.php里哪个入口开始执行好?
从onWorkerStart这里么?

已邀请:

damao - phper

赞同来自: osacar

如果要给每个client_id设置一个定时器,那就是在onConnect或者onMessage入口设置。
如果是全局的定时器,就在onWorkerStart里面设置

latin - 挨踢男

赞同来自:

我觉得如果不知道在那里加,那就在onWorkerStart里面加就好

walkor

赞同来自:

@latin @damao 赞

osacar - 80后IT男

赞同来自:

@damao @walkor
那我是应该start_businessworker.php里添加么?还是加在Event.php里?


use \Workerman\Worker;
use \GatewayWorker\BusinessWorker;
use \Workerman\Autoloader;

// 自动加载类
require_once __DIR__ . '/../../Workerman/Autoloader.php';
Autoloader::setRootPath(__DIR__);

// bussinessWorker 进程
$worker = new BusinessWorker();
// worker名称
$worker->name = 'ChatBusinessWorker';
// bussinessWorker进程数量
$worker->count = 4;
// 服务注册地址
$worker->registerAddress = '127.0.0.1:1236';

//定时器
$worker->onWorkerStart = function($task)
{
// 每2.5秒执行一次
$time_interval = 2.5;
Timer::add($time_interval, function()
{
echo "task run\n";
});
};

// 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START'))
{
Worker::runAll();
}

walkor

赞同来自:

都可以

osacar - 80后IT男

赞同来自:

@walkor


如果是在Event.php里添加的话,是不是参照里面的onMessage()方法来添加,看到里面的都是静态方法。
public static function onWorkerStart(){
// 每2.5秒执行一次
$time_interval = 2.5;
Timer::add($time_interval, function()
{
echo "task run\n";
});
}
请问是不是如上代码?多谢指正。

要回复问题请先登录注册