作者 邓超

es

@@ -59,22 +59,12 @@ class AutoMail { @@ -59,22 +59,12 @@ class AutoMail {
59 if(redis()->add('auto_mail_sync2',1,60)){ 59 if(redis()->add('auto_mail_sync2',1,60)){
60 _echo('正在计算数据'); 60 _echo('正在计算数据');
61 $maxId = $this->db->value("select `id` from `lists` order by `id` desc limit 1"); 61 $maxId = $this->db->value("select `id` from `lists` order by `id` desc limit 1");
62 - $id = 0;  
63 - while (1){  
64 - $ids = [];  
65 - for ($i=0;$i<1000;$i++){  
66 - $ids[] = $i+$id;  
67 - }  
68 - $id = end($ids);  
69 - if($id<($maxId-10000)){  
70 - continue;  
71 - }  
72 - redis()->rPush('auto_check_ids',implode(',',$ids)); 62 + $startId = $maxId-10000;
73 63
74 - if($id>$maxId){  
75 - break;  
76 - } 64 + foreach (minMaxToArray($startId,$maxId) as $ids){
  65 + redis()->rPush('auto_check_ids',implode(',',$ids));
77 } 66 }
  67 +
78 _echo('计算完成'); 68 _echo('计算完成');
79 } 69 }
80 70
@@ -595,4 +595,37 @@ function base64_de_md5(string $str){ @@ -595,4 +595,37 @@ function base64_de_md5(string $str){
595 595
596 return base64_decode(implode('',$strs).'=='); 596 return base64_decode(implode('',$strs).'==');
597 597
  598 +}
  599 +
  600 +
  601 +/**
  602 + * 把最大最小之间的数生成 二维数组
  603 + * [[2,3,4],[5,6,7],....]
  604 + * @param $min
  605 + * @param $max
  606 + * @param int $len
  607 + * @return array
  608 + * @author:dc
  609 + * @time 2025/3/7 0:06
  610 + */
  611 +function minMaxToArray($min, $max,$len=1000) {
  612 + $result = [];
  613 + $currentGroup = [];
  614 +
  615 + for ($i = $min; $i <= $max; $i++) {
  616 + $currentGroup[] = $i;
  617 +
  618 + // 每1000个数就创建一个新组
  619 + if (count($currentGroup) == $len) {
  620 + $result[] = $currentGroup;
  621 + $currentGroup = []; // 重置当前组
  622 + }
  623 + }
  624 +
  625 + // 如果还有剩余的数,添加到结果中
  626 + if (!empty($currentGroup)) {
  627 + $result[] = $currentGroup;
  628 + }
  629 +
  630 + return $result;
598 } 631 }