正在显示
1 个修改的文件
包含
24 行增加
和
3 行删除
| @@ -15,13 +15,14 @@ function start(){ | @@ -15,13 +15,14 @@ function start(){ | ||
| 15 | $pm = new Process\Manager(); | 15 | $pm = new Process\Manager(); |
| 16 | 16 | ||
| 17 | // 启动业务进程 | 17 | // 启动业务进程 |
| 18 | - $pm->addBatch(20,function (Process\Pool $pool, int $worker_id){ | 18 | + $pm->addBatch(10,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 | ||
| 22 | include_once __DIR__."/../vendor/autoload.php"; | 22 | include_once __DIR__."/../vendor/autoload.php"; |
| 23 | _echo("业务进程({$worker_id})启动成功"); | 23 | _echo("业务进程({$worker_id})启动成功"); |
| 24 | 24 | ||
| 25 | + $goNum = 0; | ||
| 25 | // 循环阻塞 | 26 | // 循环阻塞 |
| 26 | while (true){ | 27 | while (true){ |
| 27 | 28 | ||
| @@ -32,10 +33,30 @@ function start(){ | @@ -32,10 +33,30 @@ function start(){ | ||
| 32 | // 占用当前的id,占用2小时 | 33 | // 占用当前的id,占用2小时 |
| 33 | if(redis()->add('just_sync_'.$id,time(),600)){ | 34 | if(redis()->add('just_sync_'.$id,time(),600)){ |
| 34 | // 启动一个协程 | 35 | // 启动一个协程 |
| 35 | - go(function () use ($id){ | ||
| 36 | - echo file_get_contents('http://mail-serve.hagro.cn/v3/sync?id='.$id); | 36 | + go(function () use ($id,&$goNum){ |
| 37 | + $goNum++; | ||
| 38 | + try{ | ||
| 39 | + // 开始同步 | ||
| 40 | + (new \Service\SyncMail($id))->sync(); | ||
| 41 | + }catch (Throwable $e){ | ||
| 42 | + logs('sync : '.$e->getMessage()); | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + | ||
| 46 | + // 协程完成后执行的函数 | ||
| 47 | + co::defer(function () use ($id,&$goNum){ | ||
| 48 | + $goNum--; | ||
| 49 | + // 30秒后 消除占用 | ||
| 50 | + redis()->expire('just_sync_'.$id,60); | ||
| 51 | + // 写入日志 | ||
| 52 | + \Lib\Log::getInstance()->write(); | ||
| 37 | }); | 53 | }); |
| 38 | 54 | ||
| 55 | + }); | ||
| 56 | + while ($goNum == 0){ | ||
| 57 | + co::sleep(0.5); | ||
| 58 | + break; | ||
| 59 | + } | ||
| 39 | } | 60 | } |
| 40 | }else{ | 61 | }else{ |
| 41 | co::sleep(1); | 62 | co::sleep(1); |
-
请 注册 或 登录 后发表评论