作者 邓超

1

@@ -218,13 +218,14 @@ function create_coroutine(array &$cid,int &$isRunMaxCNum,$worker_id){ @@ -218,13 +218,14 @@ function create_coroutine(array &$cid,int &$isRunMaxCNum,$worker_id){
218 function sync($worker_id=0){ 218 function sync($worker_id=0){
219 // 需要同步的id 219 // 需要同步的id
220 $id = redis()->lPop('sync_email_lists'); 220 $id = redis()->lPop('sync_email_lists');
221 - _echo($worker_id.': 协程('.co::getCid().'):抢到 '.$id);  
222 221
223 if(!$id){ 222 if(!$id){
224 co::sleep(1); 223 co::sleep(1);
225 return -1; 224 return -1;
226 } 225 }
227 226
  227 + _echo($worker_id.': 协程('.co::getCid().'):抢到 '.$id);
  228 +
228 $email = db()->first(\Model\emailSql::first($id)); 229 $email = db()->first(\Model\emailSql::first($id));
229 if(!$email){ 230 if(!$email){
230 return 0; 231 return 0;
@@ -61,19 +61,23 @@ class Mail { @@ -61,19 +61,23 @@ class Mail {
61 $folder['name'] = explode('/',$folder['parseFolder']); 61 $folder['name'] = explode('/',$folder['parseFolder']);
62 $pid = 0; 62 $pid = 0;
63 foreach ($folder['id'] as $k=>$item){ 63 foreach ($folder['id'] as $k=>$item){
64 - // 插入到数据库  
65 - $pid = $db->insert(  
66 - folderSql::$table,  
67 - [ 64 + $data = [
68 'email_id' => $email_id, 65 'email_id' => $email_id,
69 'folder' => $folder['name'][$k], 66 'folder' => $folder['name'][$k],
70 'origin_folder' => $item, 67 'origin_folder' => $item,
71 'pid' => $pid 68 'pid' => $pid
72 - ]  
73 - ,false 69 + ];
  70 +
  71 + if(!$db->value(folderSql::has($data))){
  72 + // 插入到数据库
  73 + $pid = $db->insert(
  74 + folderSql::$table,
  75 + $data,
  76 + false
74 ); 77 );
75 } 78 }
76 } 79 }
  80 + }
77 $db->commit(); 81 $db->commit();
78 82
79 } 83 }
@@ -25,6 +25,17 @@ class folderSql { @@ -25,6 +25,17 @@ class folderSql {
25 } 25 }
26 26
27 27
  28 + /**
  29 + * 是否存在,存在则返回 id
  30 + * @param $where
  31 + * @return string
  32 + * @author:dc
  33 + * @time 2023/2/18 11:48
  34 + */
  35 + public static function has($where){
  36 + return "select `id` from `".self::$table."` where ".dbWhere($where);
  37 + }
  38 +
28 39
29 40
30 41