正在显示
1 个修改的文件
包含
25 行增加
和
4 行删除
@@ -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); | ||
37 | - }); | 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(); | ||
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); |
-
请 注册 或 登录 后发表评论