正在显示
1 个修改的文件
包含
24 行增加
和
26 行删除
@@ -26,38 +26,32 @@ function start(){ | @@ -26,38 +26,32 @@ function start(){ | ||
26 | include_once __DIR__."/../vendor/autoload.php"; | 26 | include_once __DIR__."/../vendor/autoload.php"; |
27 | _echo("业务进程({$worker_id})启动成功"); | 27 | _echo("业务进程({$worker_id})启动成功"); |
28 | 28 | ||
29 | - $run_timer = time(); | ||
30 | 29 | ||
31 | $id = 0; | 30 | $id = 0; |
32 | // 循环阻塞 | 31 | // 循环阻塞 |
33 | while (true){ | 32 | while (true){ |
34 | 33 | ||
35 | - // 运行超过1天的 停止 | ||
36 | - if($run_timer < (time()-21600)){ | ||
37 | - break; | ||
38 | - } | ||
39 | - | ||
40 | - $id = db()->value(\Model\listsSql::first('`id` > '.$id,'`id`')); | 34 | + $id = db()->value('select `id` from `'.\Model\emailSql::$table.'` where `id` > '.$id.' limit 1'); |
41 | 35 | ||
42 | if($id){ | 36 | if($id){ |
43 | // 占用当前的id,占用2小时 | 37 | // 占用当前的id,占用2小时 |
44 | - if(redis()->add('just_sync_delete_'.$id,time(),3600)){ | ||
45 | - // 启动一个协程 | ||
46 | - go(function () use ($id){ | ||
47 | - // 开始同步 | ||
48 | - try { | ||
49 | - sync($id); | ||
50 | - }catch (\Throwable $e){ | ||
51 | - echo $e->getMessage(); | ||
52 | - } | ||
53 | - \Lib\Log::getInstance()->write(); | ||
54 | - }); | ||
55 | - } | 38 | + // if(redis()->add('just_sync_delete_'.$id,time(),3600)){ |
39 | + // 启动一个协程 | ||
40 | + go(function () use ($id){ | ||
41 | + // 开始同步 | ||
42 | + try { | ||
43 | + sync($id); | ||
44 | + }catch (\Throwable $e){ | ||
45 | + echo $e->getMessage(); | ||
46 | + } | ||
47 | + \Lib\Log::getInstance()->write(); | ||
48 | + }); | ||
49 | + // } | ||
56 | }else{ | 50 | }else{ |
57 | - co::sleep(1); | 51 | + //每次都暂停1秒,防止同一时间启动太多的任务 |
52 | + co::sleep(300); | ||
53 | + break; | ||
58 | } | 54 | } |
59 | - //每次都暂停1秒,防止同一时间启动太多的任务 | ||
60 | - co::sleep(0.5); | ||
61 | } | 55 | } |
62 | 56 | ||
63 | },true); | 57 | },true); |
@@ -107,16 +101,20 @@ function sync($email_id){ | @@ -107,16 +101,20 @@ function sync($email_id){ | ||
107 | $page = 0; | 101 | $page = 0; |
108 | $db = db(); | 102 | $db = db(); |
109 | while (1){ | 103 | while (1){ |
110 | - $ids = $db->all("select `id`,`uid` from ".\Model\listsSql::$table." limit 100 offset ".($page*100)); | 104 | + $ids = $db->all("select `id`,`uid` from ".\Model\listsSql::$table." where `email_id` = {$email_id} and `folder_id` = {$folder_id} limit 100 offset ".($page*100)); |
111 | $page++; | 105 | $page++; |
112 | if($ids){ | 106 | if($ids){ |
113 | $ids = array_column($ids,'id','uid'); | 107 | $ids = array_column($ids,'id','uid'); |
114 | - $result = $mailServer->client->fetch(array_keys($ids),'UID',true); | 108 | + try { |
109 | + $result = $mailServer->client->fetch(array_keys($ids),'UID',true); | ||
110 | + }catch (Throwable $e){ | ||
111 | + return 0; | ||
112 | + } | ||
115 | foreach ($ids as $uid=>$id){ | 113 | foreach ($ids as $uid=>$id){ |
116 | if(!isset($result[$uid])){ | 114 | if(!isset($result[$uid])){ |
117 | - _echo('删除 e '.$email_id.' f '.$folder_id.' u '.$uid.' id '.$id); | 115 | + _echo('删除 e '.$email_id.' f '.$folder_id.' u '.$uid.' id '.$id.' d '.$db->delete(\Model\listsSql::$table,['id'=>$id]).' fd '.$db->delete('fob_hot_mail',['lists_id'=>$id])); |
118 | // 删除 如果远程没有,就删除本地 | 116 | // 删除 如果远程没有,就删除本地 |
119 | - $db->delete(\Model\listsSql::$table,['id'=>$id]); | 117 | + |
120 | } | 118 | } |
121 | } | 119 | } |
122 | } | 120 | } |
-
请 注册 或 登录 后发表评论