正在显示
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 | } |
-
请 注册 或 登录 后发表评论