コード例 #1
0
function scheduler_process()
{
    global $config, $user, $debug, $lang;
    $is_admin_request = false;
    $ts_var_stat_update = strtotime($config->db_loadItem('var_stat_update'));
    $ts_scheduled_update = sys_schedule_get_prev_run($config->db_loadItem('stats_schedule'), $config->var_stat_update);
    if (sys_get_param_int('admin_update')) {
        define('USER_LEVEL', isset($user['authlevel']) ? $user['authlevel'] : -1);
        if (USER_LEVEL > 0) {
            $is_admin_request = true;
            $ts_scheduled_update = SN_TIME_NOW;
        }
    }
    if ($ts_scheduled_update > $ts_var_stat_update) {
        lng_include('admin');
        sn_db_transaction_start();
        $ts_var_stat_update_end = strtotime($config->db_loadItem('var_stat_update_end'));
        if (SN_TIME_NOW > $ts_var_stat_update_end) {
            $old_server_status = $config->db_loadItem('game_disable');
            $config->db_saveItem('game_disable', GAME_DISABLE_STAT);
            $config->db_saveItem('var_stat_update_end', date(FMT_DATE_TIME_SQL, SN_TIME_NOW + ($config->db_loadItem('stats_minimal_interval') ? $config->stats_minimal_interval : 600)));
            $config->db_saveItem('var_stat_update_msg', 'Update started');
            sn_db_transaction_commit();
            $msg = $is_admin_request ? 'admin request' : 'scheduler';
            $next_run = date(FMT_DATE_TIME_SQL, sys_schedule_get_prev_run($config->stats_schedule, $config->var_stat_update, true));
            $msg = "Running stat updates: {$msg}. Config->var_stat_update = " . $config->var_stat_update . ', $ts_scheduled_update = ' . date(FMT_DATE_TIME_SQL, $ts_scheduled_update) . ', next_stat_update = ' . $next_run;
            $debug->warning($msg, 'Stat update', LOG_INFO_STAT_PROCESS);
            $total_time = microtime(true);
            // require_once('../includes/sys_stat.php');
            require_once SN_ROOT_PHYSICAL . 'includes/includes/sys_stat.php';
            sys_stat_calculate();
            $total_time = microtime(true) - $total_time;
            $msg = "Stat update complete in {$total_time} seconds.";
            $debug->warning($msg, 'Stat update', LOG_INFO_STAT_PROCESS);
            $msg = "{$lang['adm_done']}: {$total_time} {$lang['sys_sec']}.";
            // . date(FMT_DATE_TIME, $ts_scheduled_update) . ' ' . date(FMT_DATE_TIME, $config->var_stat_update);
            // TODO: Analyze maintenance result. Add record to log if error. Add record to log if OK
            $maintenance_result = sys_maintenance();
            $config->db_saveItem('var_stat_update', SN_TIME_SQL);
            $config->db_saveItem('var_stat_update_msg', $msg);
            $config->db_saveItem('var_stat_update_next', $next_run);
            $config->db_saveItem('var_stat_update_admin_forced', SN_TIME_SQL);
            $config->db_saveItem('var_stat_update_end', SN_TIME_SQL);
            $config->db_saveItem('game_disable', $old_server_status);
        } elseif ($ts_scheduled_update > $ts_var_stat_update) {
            $timeout = strtotime($config->db_loadItem('var_stat_update_end')) - SN_TIME_NOW;
            $msg = $config->db_loadItem('var_stat_update_msg');
            $msg = "{$msg} ETA {$timeout} seconds. Please wait...";
        }
        sn_db_transaction_rollback();
    } elseif ($is_admin_request) {
        $msg = 'Stat is up to date';
    }
    return $msg;
}
コード例 #2
0
ファイル: stat.php プロジェクト: divyinfo/SuperNova
    $pages[$first_element] = array('header' => "{$first_element}-{$last_element}");
}
$range = $range > $record_count ? $record_count : $range;
stat_tpl_assign($template, $range, 'range', $pages, $sn_group_stat_common);
while ($row = db_fetch($query)) {
    $row_stat = array('ID' => $row['id'], 'RANK' => $row['rank'], 'RANK_CHANGE' => $row['rank_old'] ? $row['rank_old'] - $row['rank'] : 0, 'POINTS' => pretty_number($row['points']));
    //pdump($row);
    if ($who == 1) {
        $row_stat['ALLY_NAME'] = $row['ally_name'];
        $row_stat['ALLY_ID'] = $row['ally_id'];
        empty($row['username']) ? $row['username'] = $row['name'] : false;
        $row_stat['NAME'] = player_nick_render_to_html($row, array('icons' => empty($source), 'color' => empty($source)));
        //    $row_stat['NAME'] = player_nick_render_to_html(array(
        //      'id' => $row['id'],
        //      // TODO - Добавлять реальное имя игрока на Блице для закрытого раунда
        //      'username' => $row['name'],
        //      'gender' => isset($row['gender']) ? $row['gender'] : GENDER_UNKNOWN,
        //      // 'gender',
        //      // 'race',
        //      // 'ally_tag',
        //    ), array('icons' => empty($source), 'color' => empty($source)));
    } else {
        $row_stat['MEMBERS'] = $row['ally_members'];
        $row_stat['POINTS_PER_MEMBER'] = pretty_number(floor($row['points'] / $row['ally_members']));
        $row_stat['NAME'] = $row['name'];
    }
    $template->assign_block_vars('stat', $row_stat);
}
$next_run = sys_schedule_get_prev_run($config->stats_schedule, $config->var_stat_update, true);
$template->assign_vars(array('REFRESH_DATE' => $config->var_stat_update ? date(FMT_DATE_TIME, strtotime($config->var_stat_update) + SN_CLIENT_TIME_DIFF) : '', 'NEXT_DATE' => $next_run ? date(FMT_DATE_TIME, $next_run + SN_CLIENT_TIME_DIFF) : '', 'RANGE' => $range, 'SUBJECT' => $who, 'TYPE' => $type, 'USER_ALLY' => $user['ally_id'], 'USER_ID' => $source ? 0 : $user['id'], 'SOURCE' => $source, 'STATS_HIDE_PM_LINK' => $config->stats_hide_pm_link || $source));
display($template, $lang['stat_header'], !empty($user), '', false, !empty($user));