作者 邓超

x

正在显示 1 个修改的文件 包含 10 行增加4 行删除
@@ -15,7 +15,7 @@ function start(){ @@ -15,7 +15,7 @@ function start(){
15 $pm = new Process\Manager(); 15 $pm = new Process\Manager();
16 16
17 // 启动业务进程 17 // 启动业务进程
18 - $pm->addBatch(15,function (Process\Pool $pool, int $worker_id){ 18 + $pm->addBatch(30,function (Process\Pool $pool, int $worker_id){
19 19
20 swoole_set_process_name('php-email-sync-list-'.$worker_id); 20 swoole_set_process_name('php-email-sync-list-'.$worker_id);
21 21
@@ -23,6 +23,7 @@ function start(){ @@ -23,6 +23,7 @@ function start(){
23 _echo("业务进程({$worker_id})启动成功"); 23 _echo("业务进程({$worker_id})启动成功");
24 24
25 $run_timer = time(); 25 $run_timer = time();
  26 + $goNum = 0;
26 // 循环阻塞 27 // 循环阻塞
27 while (true){ 28 while (true){
28 29
@@ -38,8 +39,8 @@ function start(){ @@ -38,8 +39,8 @@ function start(){
38 // 占用当前的id,占用2小时 39 // 占用当前的id,占用2小时
39 if(redis()->add('just_sync_'.$id,time(),600)){ 40 if(redis()->add('just_sync_'.$id,time(),600)){
40 // 启动一个协程 41 // 启动一个协程
41 - go(function () use ($id){  
42 - 42 + go(function () use ($id,&$goNum){
  43 + $goNum++;
43 try{ 44 try{
44 // 开始同步 45 // 开始同步
45 (new \Service\SyncMail($id))->sync(); 46 (new \Service\SyncMail($id))->sync();
@@ -49,7 +50,8 @@ function start(){ @@ -49,7 +50,8 @@ function start(){
49 50
50 51
51 // 协程完成后执行的函数 52 // 协程完成后执行的函数
52 - co::defer(function () use ($id){ 53 + co::defer(function () use ($id,&$goNum){
  54 + $goNum--;
53 // 30秒后 消除占用 55 // 30秒后 消除占用
54 redis()->expire('just_sync_'.$id,60); 56 redis()->expire('just_sync_'.$id,60);
55 // 写入日志 57 // 写入日志
@@ -57,6 +59,10 @@ function start(){ @@ -57,6 +59,10 @@ function start(){
57 }); 59 });
58 60
59 }); 61 });
  62 + while ($goNum == 0){
  63 + co::sleep(0.5);
  64 + break;
  65 + }
60 } 66 }
61 }else{ 67 }else{
62 co::sleep(1); 68 co::sleep(1);