xiaoyu 2 lat temu
rodzic
commit
d7830088c5
2 zmienionych plików z 17 dodań i 8 usunięć
  1. 14 6
      helper/task/handler.php
  2. 3 2
      helper/task/manager.php

+ 14 - 6
helper/task/handler.php

@@ -15,7 +15,7 @@ class handler
 {
     private $task_id = '';
 
-    public function __construct($task_id)
+    public function setTask_id($task_id)
     {
         $this->task_id = $task_id;
     }
@@ -206,6 +206,9 @@ class handler
             $task_id = $this->task_id;
             $total_stage = (($end - $start) / 3600);
             $cur_stage = 0;
+            $expected_curtime = time();
+            $mod_task = Model('task');
+
             for ($cur_start = $start; $cur_start < $end; $cur_start += 3600)
             {
                 if($cur_start + 3600 >= $end) {
@@ -218,7 +221,6 @@ class handler
                 $cond = array_merge($normal_cond,$tmcond);
 
                 $mod = Model();
-                $mod_task = Model('task');
 
                 $len = 1000;
                 $i = 0;
@@ -240,9 +242,15 @@ class handler
                         yield $item;
                     }
                 }
-                $cur_stage++;
-                $stage = "{$cur_stage}/{$total_stage}";
-                $mod_task->where(['task_id' => $task_id])->update(['stage' => $stage]);
+                if(!empty($task_id)){
+                    if($cur_stage === 0) {
+                        $expected_time = (time()-$expected_curtime) * $total_stage;
+                        $expected_time = date("Y-m-d H:i", $expected_time);
+                    }
+                    $cur_stage++;
+                    $stage = "导出进度:{$cur_stage}/{$total_stage}, 预计完成时间:{$expected_time}";
+                    $mod_task->where(['task_id' => $task_id])->update(['stage' => $stage]);
+                }
             }
         };
 
@@ -408,4 +416,4 @@ class handler
     {
         return md5("refill_balance_stat_all-".serialize($condition));
     }
-}
+}

+ 3 - 2
helper/task/manager.php

@@ -110,7 +110,8 @@ class manager
         $method = $task['type'];
         $params = unserialize($task['params']);
 
-        $handler = new handler($task['task_id']);
+        $handler = new handler();
+        $handler->setTask_id($task['task_id']);
         [$succ,$result] = $handler->$method($params);
 
         $mod_task = Model('task');
@@ -123,4 +124,4 @@ class manager
 
         return $task['task_id'];
     }
-}
+}