/** * @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); } }