在chat中想加一个timer来定时执行一些业务。 请问从Event.php里哪个入口开始执行好? 从onWorkerStart这里么?
我觉得如果不知道在那里加,那就在onWorkerStart里面加就好
如果要给每个client_id设置一个定时器,那就是在onConnect或者onMessage入口设置。 如果是全局的定时器,就在onWorkerStart里面设置
@latin @damao 赞
@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
如果是在Event.php里添加的话,是不是参照里面的onMessage()方法来添加,看到里面的都是静态方法。 public static function onWorkerStart(){ // 每2.5秒执行一次 $time_interval = 2.5; Timer::add($time_interval, function() { echo "task run\n"; }); } 请问是不是如上代码?多谢指正。
我觉得如果不知道在那里加,那就在onWorkerStart里面加就好
如果要给每个client_id设置一个定时器,那就是在onConnect或者onMessage入口设置。
如果是全局的定时器,就在onWorkerStart里面设置
@latin @damao 赞
@damao @walkor
那我是应该start_businessworker.php里添加么?还是加在Event.php里?
都可以
@walkor
如果是在Event.php里添加的话,是不是参照里面的onMessage()方法来添加,看到里面的都是静态方法。
public static function onWorkerStart(){
// 每2.5秒执行一次
$time_interval = 2.5;
Timer::add($time_interval, function()
{
echo "task run\n";
});
}
请问是不是如上代码?多谢指正。