您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman的Timer定时器类的定时器注意事项-定时器id可能重复
发布时间:2021-12-05 00:16:24编辑:雪饮阅读()
不同进程间的定时器id可能会重复,但是同一个进程内产生的定时器id不会重复
实例:
<?php
use Workerman\Worker;
use Workerman\lib\Timer;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
// 5个进程
$worker->count = 5;
$worker->onWorkerStart = function(Worker $worker) {
// 5个进程,每个进程都有一个这样的定时器
$timer_id=Timer::add(1, function() use($worker,&$timer_id){
echo "hi 进程id:".$worker->id.",定时器id:".$timer_id." time:".date("H:i:s",time())."\r\n";
});
$timer_id2=Timer::add(1, function() use($worker,&$timer_id2){
echo "hi 进程id:".$worker->id.",定时器id:".$timer_id2." time:".date("H:i:s",time())."\r\n";
});
};
Worker::runAll();
// 运行worker
Worker::runAll();
?>
实例运行:
[root@izj6c2jeancylo0ppo4vz5z workerman]# php test.php start
Workerman[test.php] start in DEBUG mode
------------------------------------- WORKERMAN --------------------------------------
Workerman version:4.0.22 PHP version:7.0.33
-------------------------------------- WORKERS ---------------------------------------
proto user worker listen processes status
tcp root none none 5 [OK]
--------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
hi 进程id:3,定时器id:1 time:16:29:05
hi 进程id:3,定时器id:2 time:16:29:05
hi 进程id:4,定时器id:1 time:16:29:05
hi 进程id:4,定时器id:2 time:16:29:05
hi 进程id:0,定时器id:1 time:16:29:05
hi 进程id:0,定时器id:2 time:16:29:05
hi 进程id:1,定时器id:1 time:16:29:05
hi 进程id:1,定时器id:2 time:16:29:05
hi 进程id:2,定时器id:1 time:16:29:05
hi 进程id:2,定时器id:2 time:16:29:05
hi 进程id:3,定时器id:1 time:16:29:06
hi 进程id:3,定时器id:2 time:16:29:06
hi 进程id:4,定时器id:1 time:16:29:06
hi 进程id:4,定时器id:2 time:16:29:06
hi 进程id:0,定时器id:1 time:16:29:06
hi 进程id:0,定时器id:2 time:16:29:06
hi 进程id:1,定时器id:1 time:16:29:06
hi 进程id:1,定时器id:2 time:16:29:06
hi 进程id:2,定时器id:1 time:16:29:06
hi 进程id:2,定时器id:2 time:16:29:06
hi 进程id:3,定时器id:1 time:16:29:07
hi 进程id:3,定时器id:2 time:16:29:07
hi 进程id:4,定时器id:1 time:16:29:07
hi 进程id:4,定时器id:2 time:16:29:07
hi 进程id:0,定时器id:1 time:16:29:07
hi 进程id:0,定时器id:2 time:16:29:07
hi 进程id:1,定时器id:1 time:16:29:07
hi 进程id:1,定时器id:2 time:16:29:07
hi 进程id:2,定时器id:1 time:16:29:07
hi 进程id:2,定时器id:2 time:16:29:07
hi 进程id:3,定时器id:1 time:16:29:08
hi 进程id:3,定时器id:2 time:16:29:08
hi 进程id:4,定时器id:1 time:16:29:08
hi 进程id:4,定时器id:2 time:16:29:08
hi 进程id:0,定时器id:1 time:16:29:08
hi 进程id:0,定时器id:2 time:16:29:08
hi 进程id:1,定时器id:1 time:16:29:08
hi 进程id:1,定时器id:2 time:16:29:08
hi 进程id:2,定时器id:1 time:16:29:08
hi 进程id:2,定时器id:2 time:16:29:08
hi 进程id:3,定时器id:1 time:16:29:09
hi 进程id:3,定时器id:2 time:16:29:09
hi 进程id:4,定时器id:1 time:16:29:09
hi 进程id:4,定时器id:2 time:16:29:09
hi 进程id:0,定时器id:1 time:16:29:09
hi 进程id:0,定时器id:2 time:16:29:09
hi 进程id:1,定时器id:1 time:16:29:09
hi 进程id:1,定时器id:2 time:16:29:09
hi 进程id:2,定时器id:1 time:16:29:09
hi 进程id:2,定时器id:2 time:16:29:09
^CWorkerman[test.php] stopping ...
Workerman[test.php] has been stopped
可以看到有进程id不同情况下定时器id相同的情况。
同一进程内不断创建新的定时器,定时器的id是不会重复的:
<?php
use Workerman\Worker;
use Workerman\lib\Timer;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
//1个进程
$worker->count = 1;
$worker->onWorkerStart = function(Worker $worker) {
$timers=[];
for($i=0;$i<5;$i++){
$timer_id=Timer::add(1, function() use($worker,$i,&$timers){
$timer_id=$timers[$i];
// echo "hi 进程id:".$worker->id.",定时器id:".$timer_id." time:".date("H:i:s",time())."\r\n";
});
$timers[$i]=$timer_id;
echo "\r\n";
echo "进程id:".$worker->id.",定时器id:".$timer_id;
echo "\r\n";
}
};
Worker::runAll();
// 运行worker
Worker::runAll();
?>
实例运行:
[root@izj6c2jeancylo0ppo4vz5z workerman]# php test.php start
Workerman[test.php] start in DEBUG mode
------------------------------------- WORKERMAN --------------------------------------
Workerman version:4.0.22 PHP version:7.0.33
-------------------------------------- WORKERS ---------------------------------------
proto user worker listen processes status
tcp root none none 1 [OK]
--------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
进程id:0,定时器id:1
进程id:0,定时器id:2
进程id:0,定时器id:3
进程id:0,定时器id:4
进程id:0,定时器id:5
关键字词:workerman,Timer,定时器,id,id重复,重复
相关文章
- workerman的Timer定时器类的del方法实现定时器删除
- workerman的Timer定时器类的del方法实现定时器回调中
- workerman的Timer定时器类的add方法实现只在进程中的
- workerman的Timer定时器类的add方法实现匿名传参定时
- workerman的Timer定时器类的add方法实现定时器中销毁
- workerman的Timer定时器类的add方法实现定时器中销毁
- workerman的Timer定时器类的add方法实现定时器函数为
- workerman的Timer定时器类的add方法实现定时器函数为
- workerman的Timer定时器类的add方法实现定时函数为类
- workerman的Timer定时器类的add方法实现定时函数为类