作者 邓超

优化同步

@@ -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,15 +41,8 @@ class SyncToEsCmd { @@ -39,15 +41,8 @@ class SyncToEsCmd {
39 } 41 }
40 42
41 $id = redis()->lPop('sync_to_es'); 43 $id = redis()->lPop('sync_to_es');
42 - 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; 44 $code = 500;
50 - 45 + if($id){
51 $data = $db->first(\Model\listsSql::first('`id` = '.$id)); 46 $data = $db->first(\Model\listsSql::first('`id` = '.$id));
52 if($data){ 47 if($data){
53 // 设置 进程 是否在运行 48 // 设置 进程 是否在运行
@@ -56,7 +51,7 @@ class SyncToEsCmd { @@ -56,7 +51,7 @@ class SyncToEsCmd {
56 $data = $this->getEsData($data); 51 $data = $this->getEsData($data);
57 $doc_id = $data['email_id'].'_'.$data['folder_id'].'_'.$data['uid']; 52 $doc_id = $data['email_id'].'_'.$data['folder_id'].'_'.$data['uid'];
58 53
59 - $code = es()->save($doc_id,$data); 54 + $code = $es->save($doc_id,$data);
60 } 55 }
61 56
62 if($code!==200){ 57 if($code!==200){
@@ -64,20 +59,9 @@ class SyncToEsCmd { @@ -64,20 +59,9 @@ class SyncToEsCmd {
64 _echo('同步es: '.$doc_id.'===>'.$code); 59 _echo('同步es: '.$doc_id.'===>'.$code);
65 } 60 }
66 61
67 - $db = null;  
68 -  
69 - co::defer(function (){  
70 - static::$num--;  
71 -  
72 - db()->close();  
73 -  
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