作者 邓超

x

@@ -41,6 +41,7 @@ class HotMail { @@ -41,6 +41,7 @@ class HotMail {
41 private function start(){ 41 private function start(){
42 _echo('启动预热邮件处理 '.getmypid()); 42 _echo('启动预热邮件处理 '.getmypid());
43 43
  44 + if(redis()->add('hot_mail_sync',1)){
44 $fob = $this->getFobHotEmail(); 45 $fob = $this->getFobHotEmail();
45 46
46 // 把黑格自己的也算进去 47 // 把黑格自己的也算进去
@@ -61,7 +62,6 @@ class HotMail { @@ -61,7 +62,6 @@ class HotMail {
61 }catch (Throwable $e){} 62 }catch (Throwable $e){}
62 } 63 }
63 64
64 -  
65 $maxId = $this->db->value("select `id` from `lists` order by `id` desc limit 1"); 65 $maxId = $this->db->value("select `id` from `lists` order by `id` desc limit 1");
66 $id = 0; 66 $id = 0;
67 while (1){ 67 while (1){
@@ -71,12 +71,30 @@ class HotMail { @@ -71,12 +71,30 @@ class HotMail {
71 } 71 }
72 $id = end($ids); 72 $id = end($ids);
73 73
74 - $this->run($ids); 74 + redis()->rPush('hot_check_ids',implode(',',$ids));
  75 +
75 if($id>$maxId){ 76 if($id>$maxId){
76 break; 77 break;
77 } 78 }
78 } 79 }
79 80
  81 + redis()->set('hot_mail_sync',1,60);
  82 + }
  83 +
  84 +
  85 + while (1){
  86 + $ids = redis()->lPop('hot_check_ids');
  87 + if($ids){
  88 + $ids = explode(',',$ids);
  89 + $this->run($ids);
  90 + }else{
  91 + echo '等待'.PHP_EOL;
  92 + co::sleep(2);
  93 + }
  94 + }
  95 +
  96 +
  97 +
80 98
81 echo '已执行完成'.PHP_EOL; 99 echo '已执行完成'.PHP_EOL;
82 } 100 }
@@ -98,7 +116,7 @@ class HotMail { @@ -98,7 +116,7 @@ class HotMail {
98 $w = ['email' =>$item['from']]; 116 $w = ['email' =>$item['from']];
99 } 117 }
100 // 是否在 预热邮箱中 118 // 是否在 预热邮箱中
101 - if($this->db->count('select count(*) from `hot_mail` where '.dbWhere($w))){ 119 + if($this->db->cache(300)->count('select count(*) from `hot_mail` where '.dbWhere($w))){
102 120
103 $ret = $this->db->update(listsSql::$table,['is_hots'=>1],dbWhere(['id'=>$item['id']])); 121 $ret = $this->db->update(listsSql::$table,['is_hots'=>1],dbWhere(['id'=>$item['id']]));
104 echo date('d H:i:s').' ==》 '.$item['id'].':'.$ret."\n"; 122 echo date('d H:i:s').' ==》 '.$item['id'].':'.$ret."\n";
@@ -156,7 +174,7 @@ swoole_set_process_name('hot-email-run-man'); @@ -156,7 +174,7 @@ swoole_set_process_name('hot-email-run-man');
156 174
157 $pm = new Swoole\Process\Manager(); 175 $pm = new Swoole\Process\Manager();
158 176
159 -$pm->add(function (){ 177 +$pm->addBatch(10,function (){
160 178
161 swoole_set_process_name('hot-email-run'); 179 swoole_set_process_name('hot-email-run');
162 180
@@ -165,7 +183,7 @@ $pm->add(function (){ @@ -165,7 +183,7 @@ $pm->add(function (){
165 new HotMail(); 183 new HotMail();
166 // 执行完了暂停5分钟在执行 184 // 执行完了暂停5分钟在执行
167 sleep(300); 185 sleep(300);
168 -}); 186 +},true);
169 187
170 $pm->start(); 188 $pm->start();
171 189