作者 邓超

mail del

@@ -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 }