作者 邓超

优化同步

@@ -14,7 +14,6 @@ class SyncToEsCmd { @@ -14,7 +14,6 @@ class SyncToEsCmd {
14 14
15 public $isStop = false; 15 public $isStop = false;
16 16
17 - static $num = 0;  
18 17
19 public function handler(){ 18 public function handler(){
20 19
@@ -28,6 +27,9 @@ class SyncToEsCmd { @@ -28,6 +27,9 @@ class SyncToEsCmd {
28 // pcntl_signal(SIGHUP, $handler); 27 // pcntl_signal(SIGHUP, $handler);
29 28
30 29
  30 + $es = es();
  31 + $db = db();
  32 +
31 while (1){ 33 while (1){
32 34
33 // 检查是否接收到信号 35 // 检查是否接收到信号
@@ -39,45 +41,27 @@ class SyncToEsCmd { @@ -39,45 +41,27 @@ class SyncToEsCmd {
39 } 41 }
40 42
41 $id = redis()->lPop('sync_to_es'); 43 $id = redis()->lPop('sync_to_es');
  44 + $code = 500;
42 if($id){ 45 if($id){
43 - while(self::$num>=50){  
44 - co::sleep(0.5);  
45 - }  
46 - go(function () use ($id){  
47 - static::$num++;  
48 - $db = db();  
49 - $code = 500;  
50 -  
51 - $data = $db->first(\Model\listsSql::first('`id` = '.$id));  
52 - if($data){  
53 - // 设置 进程 是否在运行  
54 - $data['is_auto']=$db->count('select count(*) from `lists_auto` where `list_id` = '.$data['id']) ? 1 : 0;  
55 -  
56 - $data = $this->getEsData($data);  
57 - $doc_id = $data['email_id'].'_'.$data['folder_id'].'_'.$data['uid'];  
58 -  
59 - $code = es()->save($doc_id,$data);  
60 - } 46 + $data = $db->first(\Model\listsSql::first('`id` = '.$id));
  47 + if($data){
  48 + // 设置 进程 是否在运行
  49 + $data['is_auto']=$db->count('select count(*) from `lists_auto` where `list_id` = '.$data['id']) ? 1 : 0;
61 50
62 - if($code!==200){  
63 - @file_put_contents(LOG_PATH.'/sync_es_fail.log',$id."\n",FILE_APPEND);  
64 - _echo('同步es: '.$doc_id.'===>'.$code);  
65 - } 51 + $data = $this->getEsData($data);
  52 + $doc_id = $data['email_id'].'_'.$data['folder_id'].'_'.$data['uid'];
66 53
67 - $db = null;  
68 -  
69 - co::defer(function (){  
70 - static::$num--; 54 + $code = $es->save($doc_id,$data);
  55 + }
71 56
72 - db()->close(); 57 + if($code!==200){
  58 + @file_put_contents(LOG_PATH.'/sync_es_fail.log',$id."\n",FILE_APPEND);
  59 + _echo('同步es: '.$doc_id.'===>'.$code);
  60 + }
73 61
74 - \Lib\Log::getInstance()->write();  
75 - });  
76 - });  
77 - }else{  
78 - co::sleep(1);  
79 } 62 }
80 63
  64 + sleep(1);
81 } 65 }
82 66
83 } 67 }
@@ -108,12 +92,7 @@ class SyncToEsCmd { @@ -108,12 +92,7 @@ class SyncToEsCmd {
108 92
109 } 93 }
110 94
111 -\Lib\DbPool::$clientNumber = 60;  
112 -  
113 -\Co\run(function (){  
114 - (new SyncToEsCmd())->handler();  
115 -});  
116 - 95 +(new SyncToEsCmd())->handler();
117 96
118 return 1; 97 return 1;
119 98