php定时删除,删除定时任务

# swoole_timer_clear不能用于清除其他进程的定时器,只作用于当前进程

上章节挖的坑,这节来填下。

![](https://box.kancloud.cn/96224142c70af41e6a3d54902bd2ef57_712x69.png)

最初想着既然会返回定时器ID,那么我只要把ID存在数据库,然后需要删除的时候调用下swoole_timer_clear自然搞定,但是怎么都删不掉

![](https://box.kancloud.cn/83550000e2377543638f41d5c8062299_596x262.png)

看到官方文档,发现返回的$timer_id是没什么用的,回调函数中的id才是真主,终于可以删除了,但是问题又来了,这刚添加就被删了,还怎么定时怎么循环,继续开动脑细胞

~~~

//初始化和客户端定时任务的公共部分

public function commonTaskDo($serv,$data){

if(is_array($data)){

if(!$data['onetime']) {

//非一次性任务

$serv->tick($data['millisecond'], function($timer_code) use ($serv ,$data) {

$taskdata= Db::table(Tool::getPrefix('system').'timer')->where('timer_id',$data['timer_id'])->find();

if($taskdata['status']==1){

$serv->task($data);

echo "非一次性任务(timer_id:".$data['timer_id'].") work Continue Handle Worker\n";

}else{

$serv->clearTimer($timer_code);

echo "非一次性任务delete work (timer_id:".$data['timer_id'].") success! \n";

}

});

}else{

//一次性任务

$serv->after($data['millisecond'], function($timer_code) use ($serv ,$data) {

$serv->task($data);

});

}

}

}

~~~

加一张定时任务数据表,每新加一个定时就在表中新加一条记录(且状态为运行中),删除定时只是修改状态(已删除),然后如上,在定时器回调函数中,每次回调都去判断这个状态,来确定是否需要删除定时,现在终于可以正常的新增删除定时了,但是编辑定时呢?????

解决这个问题的时候,开始是把我绕迷了,有种盗梦空间的感觉,怎么都走不出去了,终于我的脑子还是开窍了,只要新增不就可以了嘛(感觉自己好伟大),所以编辑就是删除原来的定时(修改记录状态)然后再重新新增一条定时记录在表中(且状态为运行中)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值