正在显示
1 个修改的文件
包含
13 行增加
和
15 行删除
@@ -26,22 +26,16 @@ function start(){ | @@ -26,22 +26,16 @@ 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)){ | 38 | + // if(redis()->add('just_sync_delete_'.$id,time(),3600)){ |
45 | // 启动一个协程 | 39 | // 启动一个协程 |
46 | go(function () use ($id){ | 40 | go(function () use ($id){ |
47 | // 开始同步 | 41 | // 开始同步 |
@@ -52,12 +46,12 @@ function start(){ | @@ -52,12 +46,12 @@ function start(){ | ||
52 | } | 46 | } |
53 | \Lib\Log::getInstance()->write(); | 47 | \Lib\Log::getInstance()->write(); |
54 | }); | 48 | }); |
55 | - } | 49 | + // } |
56 | }else{ | 50 | }else{ |
57 | - co::sleep(1); | ||
58 | - } | ||
59 | //每次都暂停1秒,防止同一时间启动太多的任务 | 51 | //每次都暂停1秒,防止同一时间启动太多的任务 |
60 | - co::sleep(0.5); | 52 | + co::sleep(300); |
53 | + break; | ||
54 | + } | ||
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'); |
108 | + try { | ||
114 | $result = $mailServer->client->fetch(array_keys($ids),'UID',true); | 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 | } |
-
请 注册 或 登录 后发表评论