定时器怎么清除tick
来源:5-2 Swoole毫秒定时器
已经快秃顶了呢
2019-03-31
老师,您好我想在客户端链接后做个1000毫秒tick定时器,5000毫秒后结束tick定时器。
public function onOpen($ws, $request)
{
var_dump($request->fd);
$ws->push($request->fd,'欢迎链接,' . $request->fd);
Swoole_timer_tick(1000,function($timer) use($ws,$request){
$ws->push($request->fd,'现在开始进行攻击,伤害:100');
$this->timer_id = $timer;
});
$timer = $this->timer_id;
Swoole_timer_after(5000,function() use($ws,$request,$timer){
Swoole_timer_clear($timer);
$ws->push($request->fd,'攻击完成!成功击毙敌人');
});
$ws->push($request->fd,'发现敌人,准备进行攻击');
}
结果是5000毫秒后tick没有关闭还在继续执行。我看不出哪里有什么不对
运行结果
写回答
1回答
-
sindey1982
2019-04-02
小哥你的变量作用域有问题,上面的timer作用域是 闭包函数 。所以下面的use是拿不到的。你弄个外围的变量,可以是类静态 ,也可以是titck after两个函数同级的局部变量。保存一下timeid,用这个变量清除就ok了
00
相似问题