Browse Source

提交队列的东西

lvhao 4 months ago
parent
commit
3791d27648
1 changed files with 79 additions and 6 deletions
  1. 79 6
      core/CoreApp/controllers/Zzjobs.php

+ 79 - 6
core/CoreApp/controllers/Zzjobs.php

@@ -1,19 +1,27 @@
 <?php
 defined('BASEPATH') or exit('No direct script access allowed');
 /**
- * 此类是为了解决erp没有队列的问题,为了解决这个问题,先写一下这个类,避免后期写那么多定时任务类 
+ * 此类是为了解决erp没有队列的问题,为了解决这个问题,先写一下这个类,避免后期写那么多定时任务类   这里只能解决每间隔多少时间执行一会的
  */
 class Zzjobs extends Start_Controller
 {
     private $serect_str = "erpjob";
-    private $user_agent = 'XuChangLongYi/Job (Erp)';
-    private $api = "ly202504160727";
+    private $user_agent = 'Xcly251618/Job (Erp)';
+    private $api = "ly202508160727";
+    private $ip = ['127.0.0.1','47.105.156.18'];
     public function __construct()
     {
         parent::__construct();
+        $this->load->_model("Model_zzjobs","zzjobs");
+        $this->load->_model("Model_logic_tools",'logic_tools');
     }
     public function _remap($arg, $arg_array)
     {
+        $ip = $_SERVER['REMOTE_ADDR'];
+       
+        if(!in_array($ip,$this->ip)){
+            exit("Unauthorized access");
+        }
         $user_agent = empty($_SERVER['HTTP_USER_AGENT'])?"":$_SERVER['HTTP_USER_AGENT'];
         $token = empty($_SERVER['HTTP_X_AUTH_TOKEN'])?"":$_SERVER['HTTP_X_AUTH_TOKEN'];
         $time =  $this->input->get('time',true);
@@ -37,7 +45,7 @@ class Zzjobs extends Start_Controller
         if($api != $this->api){
             exit("Access denied due to insufficient permissions");
         }
-        $check_str = date("Ymd")."_".$this->serect_str."_".$time;
+        $check_str = date("Ymd")."$"."_".$this->serect_str."_$".$time;
         if(empty($user_agent)){
             exit('No direct script access allowed');
         }
@@ -57,8 +65,73 @@ class Zzjobs extends Start_Controller
         
     }
     private function _index() {}
+     //一般每一分钟都执行的 每分钟就执行10条   
+     //每五分钟 就执行100条
+     
+     //其他的就不限制了
     private function _jobs() {
-        $domain = $_SERVER['HTTP_HOST'];
-        exit($domain."执行");
+        $m = (int)date("i");//当前分钟
+        // 1分钟的队列
+        $list_1 =  $this->zzjobs->find_all('do_interval = 1 and status = 0');
+        // 5分钟的队列
+        $list_5 = [];
+        if($m%5 == 0){
+            $list_5 = $this->zzjobs->find_all('do_interval = 5 and status = 0');
+        }
+        // 10分钟的队列
+        $list_10 = [];
+        if($m%10 == 0){
+            $list_10 = $this->zzjobs->find_all('do_interval = 10 and status = 0');
+        }
+        // 30分钟的队列
+        $list_30 = [];
+        if($m%30 == 0){
+            $list_30 = $this->zzjobs->find_all('do_interval = 10 and status = 0');
+        }
+        $list = array_merge($list_1,$list_5,$list_10,$list_30);
+        $do_list_ids = array_column($list,'id');
+       
+        if(empty($do_list_ids)){
+            exit("No jobs to do");
+        }
+        $this->db->query("update crowd_zzjobs set status = 1 where id  in (".implode(",",$do_list_ids).")");
+        foreach($list as $k=>$v){
+            $this->tasksAssign($v);
+        }
     }
+    private function tasksAssign($info){
+        switch($info['quque']){
+            case '1m':
+                $this->zzjobs->save([
+                    'result'=>$this->logic_tools->ret_json(1,"1m队列已经执行"),
+                    'last_time'=>time()
+                ],$info['id']);
+                break;
+            case '5m':
+                $this->zzjobs->save([
+                    'result'=>$this->logic_tools->ret_json(1,"没有对应发方法执行任务"),
+                    'last_time'=>time()
+                ],$info['id']);
+                break;
+            case '10m':
+                $this->zzjobs->save([
+                    'result'=>$this->logic_tools->ret_json(1,"没有对应发方法执行任务"),
+                    'last_time'=>time()
+                ],$info['id']);
+                break;
+            case '30':
+                $this->zzjobs->save([
+                    'result'=>$this->logic_tools->ret_json(1,"没有对应发方法执行任务"),
+                    'last_time'=>time()
+                ],$info['id']);
+                break;
+            default:
+                    $this->zzjobs->save([
+                        'result'=>$this->logic_tools->ret_json(-1,"没有对应发方法执行任务"),
+                        'last_time'=>time()
+                    ],$info['id']);
+                break;
+        }
+
+    } 
 }