| 
...
 | 
...
 | 
@@ -18,16 +18,24 @@ function start(){ | 
| 
 | 
 | 
     $pm = new Process\Manager();
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
     // 启动一个进程来管理定时
 | 
| 
 | 
 | 
 //    $pm->add(function (Process\Pool $pool, int $workerId){
 | 
| 
 | 
 | 
 //        _echo("定时进程({$workerId})启动成功");
 | 
| 
 | 
 | 
 //
 | 
| 
 | 
 | 
 //
 | 
| 
 | 
 | 
 //        // 进行阻塞,否则定时器无法运行
 | 
| 
 | 
 | 
 //        while (true){
 | 
| 
 | 
 | 
 //            co::sleep(9999);
 | 
| 
 | 
 | 
 //        }
 | 
| 
 | 
 | 
 //
 | 
| 
 | 
 | 
 //    },true);
 | 
| 
 | 
 | 
     $pm->add(function (Process\Pool $pool, int $workerId){
 | 
| 
 | 
 | 
         _echo("定时进程({$workerId})启动成功");
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         \Swoole\Timer::tick(1000,function() use(&$pool){
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
             if(redis()->getOriginData('email_sync_stop_num') >= WORKER_NUM+2 ){
 | 
| 
 | 
 | 
                 $pool->shutdown();
 | 
| 
 | 
 | 
             }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         });
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         // 进行阻塞,否则定时器无法运行
 | 
| 
 | 
 | 
         while (true){
 | 
| 
 | 
 | 
             co::sleep(9999);
 | 
| 
 | 
 | 
         }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
     },true);
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 // 协程配置
 | 
| 
...
 | 
...
 | 
@@ -44,6 +52,11 @@ function start(){ | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         // 循环阻塞
 | 
| 
 | 
 | 
         while (true){
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
             if(redis()->get(SYNC_RUNNING_REDIS_KEY)=='stop'){
 | 
| 
 | 
 | 
                 break;
 | 
| 
 | 
 | 
             }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
             // 是否到了协程配置的数量上限
 | 
| 
 | 
 | 
             if($start_num < COROUTINE_MAX_NUM){
 | 
| 
 | 
 | 
                 // 需要同步的id
 | 
| 
...
 | 
...
 | 
@@ -99,8 +112,20 @@ function start(){ | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         // 验证是否全部进程退出了
 | 
| 
 | 
 | 
         while (true){
 | 
| 
 | 
 | 
             if(!$start_num){
 | 
| 
 | 
 | 
                 redis()->incr('email_sync_stop_num');
 | 
| 
 | 
 | 
                 break;
 | 
| 
 | 
 | 
             }
 | 
| 
 | 
 | 
             co::sleep(0.5);
 | 
| 
 | 
 | 
         }
 | 
| 
 | 
 | 
         while (true){
 | 
| 
 | 
 | 
             co::sleep(99);
 | 
| 
 | 
 | 
         }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
     },true);
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
     // 启动一个同步内容的进程
 | 
| 
 | 
 | 
     $pm->add(function (Process\Pool $pool, int $worker_id){
 | 
| 
 | 
 | 
         _echo("业务进程({$worker_id})启动成功,body");
 | 
| 
...
 | 
...
 | 
@@ -109,8 +134,11 @@ function start(){ | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         // 循环阻塞
 | 
| 
 | 
 | 
         while (true){
 | 
| 
 | 
 | 
             if(redis()->get(SYNC_RUNNING_REDIS_KEY)=='stop'){
 | 
| 
 | 
 | 
                 break;
 | 
| 
 | 
 | 
             }
 | 
| 
 | 
 | 
             // 是否到了协程配置的数量上限
 | 
| 
 | 
 | 
             if($start_num < 50){
 | 
| 
 | 
 | 
             if($start_num < 500){
 | 
| 
 | 
 | 
                 // 需要同步的id
 | 
| 
 | 
 | 
                 $id = redis()->lPop('sync_email_body');
 | 
| 
 | 
 | 
 
 | 
| 
...
 | 
...
 | 
@@ -162,6 +190,17 @@ function start(){ | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         // 验证是否全部进程退出了
 | 
| 
 | 
 | 
         while (true){
 | 
| 
 | 
 | 
             if(!$start_num){
 | 
| 
 | 
 | 
                 redis()->incr('email_sync_stop_num');
 | 
| 
 | 
 | 
                 break;
 | 
| 
 | 
 | 
             }
 | 
| 
 | 
 | 
             co::sleep(0.5);
 | 
| 
 | 
 | 
         }
 | 
| 
 | 
 | 
         while (true){
 | 
| 
 | 
 | 
             co::sleep(99);
 | 
| 
 | 
 | 
         }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
     },true);
 | 
| 
 | 
 | 
 
 | 
...
 | 
...
 | 
 |