function test_incr_counts() { $counts = ['ut01' => 1, 'ut02' => 2]; $result = Module_ControlCentre_Counter::del_all_counts(); $this->assertEquals($result['errno'], 0); Module_ControlCentre_Counter::incr_counts($counts); foreach ($counts as $_k => $_v) { $counts[$_k] = 2 * $_v; } Module_ControlCentre_Counter::incr_counts($counts); $counts = Module_ControlCentre_Counter::get_all_counts(); $this->assertEquals($counts['data'], [self::$_test_key => 0, self::$_key1 => 3, self::$_key2 => 6]); $result = Module_ControlCentre_Counter::del_counts([self::$_key1, self::$_key3]); $this->assertEquals($result['errno'], 0); $this->assertEquals($result['data'], [self::$_key1 => true, self::$_key3 => false]); }
/** * @param array $options * @return array */ private static function _add_task_record_hook($options) { $current_task = self::current_task(); // record $model_task = new Model_Task(); $task_options = $options; $task_options['task_pid'] = posix_getpid(); $task_options['create_time'] = $current_task->create_time; $before_record = function ($data) use($current_task, $task_options, $model_task) { $create = $model_task->create($current_task->id, $task_options, self::TASK_STATUS_RUNNING); return $create; }; $after_record = function ($result) use($current_task, $model_task) { $status = self::TASK_STATUS_FINISH; if (!isset($result['errno'])) { $status = self::TASK_STATUS_FAILED; } elseif ($result['errno'] !== Const_Err_Base::ERR_OK) { if (isset($result[Const_DataAccess::MREK_STATUS]) && isset(self::$_module_task_stat_map[$result[Const_DataAccess::MREK_STATUS]])) { $status = self::$_module_task_stat_map[$result[Const_DataAccess::MREK_STATUS]]; } else { $status = self::TASK_STATUS_FAILED; } } $upinfo = ['result' => $result, 'status' => $status, 'end_time' => time()]; $all_counts = Module_ControlCentre_Counter::get_all_counts(); if ($all_counts[Const_DataAccess::MREK_ERRNO] == Const_Err_Base::ERR_OK) { $counts = $all_counts[Const_DataAccess::MREK_DATA]; foreach ($counts as $_k => $_c) { if ($_c == 0) { unset($counts[$_k]); } } $upinfo['counts'] = $counts; } $upinfo['server'] = Module_ScheduledTask_Main::current_server_name(); return $model_task->update($current_task->id, $upinfo); }; $current_task->register_before_run_hook('record_create_task', $before_record); $current_task->register_after_run_hook('record_finish_task', $after_record); }
/** * @param int $mid * @param array $stuff_mids * @param array $id_map * @return callable */ static function after_run_module_record_hook($mid, $stuff_mids, $id_map) { if ($stuff_mids === null) { $stuff_mids = []; } if (!isset($id_map[$mid][1])) { Lib_Log::warn("%s gen record id and order failed!", __METHOD__); } return function ($task_id, $module_id, $class, $result) use($mid, $stuff_mids, $id_map) { $record_id = $id_map[$mid][0]; $model_module_record = new Model_TaskRunModuleRecord(); // log for record Lib_Log::debug('record after hook task_id: [%d], module_id: [%d], record_id: [%d]', [$task_id, $module_id, $record_id]); // end log $stat = []; $end_time = time(); $counts = Module_ControlCentre_Counter::get_all_counts(); if (!isset($result['errno']) || $result['errno'] !== Const_Err_Base::ERR_OK) { $record = ['status' => Module_ModuleManager_Main::RUN_MODULE_STATUS_FAILED, 'result' => $result, 'end_time' => $end_time]; if (isset($result[Const_DataAccess::MREK_STATUS])) { $record['status'] = $result[Const_DataAccess::MREK_STATUS]; } } else { $record = ['status' => Module_ModuleManager_Main::RUN_MODULE_STATUS_FINISH, 'end_time' => $end_time]; $data = $result['data']; if (method_exists($class, 'format_record_msg')) { $stat = call_user_func([$class, 'format_record_msg'], $data); } if (!empty($stat)) { $record['result'] = ['errno' => Const_Err_Base::ERR_OK, 'msg' => $stat]; $record['stat'] = $stat; } } if ($counts['errno'] != Const_Err_Base::ERR_OK) { $stuff_mids = []; } else { $counts = $counts['data']; $_tmp_stat = Module_ControlCentre_Counter::formated_counts($mid, $counts); if (is_array($_tmp_stat) && !empty($_tmp_stat)) { $record['stat'] = isset($record['stat']) ? array_merge($_tmp_stat, $record['stat']) : $_tmp_stat; } unset($_tmp_stat); } $model_module_record->update_record($record_id, $record); foreach ($stuff_mids as $_mid) { $stat = []; $record_id = $id_map[$_mid][0]; $_tmp_stat = Module_ControlCentre_Counter::formated_counts($_mid, $counts); is_array($_tmp_stat) && ($stat = array_merge($_tmp_stat, $stat)); unset($_tmp_stat); $record = ['status' => Module_ModuleManager_Main::RUN_MODULE_STATUS_CALLED, 'end_time' => $end_time]; if (!empty($stat)) { $record['stat'] = $stat; } $model_module_record->update_record($record_id, $record); } }; }