Exemple #1
0
 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]);
 }
Exemple #2
0
 /**
  * @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);
 }
Exemple #3
0
 /**
  * @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);
         }
     };
 }