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