示例#1
0
 /**
  * @param int $task_id
  */
 static function ratio_of_process($task_id)
 {
     $flow = Module_ControlCentre_FlowManager::current_flow()->flow;
     $main_mids = $flow[Module_FlowManager_Main::FLOW_TYPE_MAIN];
     $task_status_key = self::_current_task_status_id($task_id);
     $task_status = xcache_get($task_status_key);
     $model_module_record = new Model_TaskRunModuleRecord();
     $cmid = null;
     $pre_mid = null;
     $pre_pre_mid = null;
     while (!$task_status) {
         $current_mid_key = self::_current_mid_hook_key($task_id);
         $current_mid = xcache_get($current_mid_key);
         if ($current_mid && in_array($current_mid, $main_mids)) {
             foreach ($main_mids as $_mid) {
                 if ($_mid == $current_mid) {
                     break;
                 }
                 $pre_pre_mid = $pre_mid;
                 $pre_mid = $_mid;
             }
             $ratio = Module_ControlCentre_Counter::get_instance()->get_ratio_count($current_mid, $pre_mid);
             $record_id = Module_ModuleManager_Main::module_run_id($task_id, $current_mid);
             $ratio && $model_module_record->update_record($record_id, ['ratio' => $ratio]);
             if ($cmid != $current_mid) {
                 $cmid = $current_mid;
                 if ($pre_mid) {
                     $pre_ratio = Module_ControlCentre_Counter::get_instance()->get_ratio_count($pre_mid, $pre_pre_mid);
                     $pre_record_id = Module_ModuleManager_Main::module_run_id($task_id, $pre_mid);
                     $pre_ratio && $model_module_record->update_record($pre_record_id, ['ratio' => $pre_ratio]);
                 }
             }
         }
         $task_status = xcache_get($task_status_key);
         sleep(3);
     }
 }