예제 #1
0
function tool_main_set_restart_mode($domain_id, $shard_id, $restart_mode = 0)
{
    global $db, $nel_user, $tpl;
    global $AS_ShardRestart, $AS_ShardDomainRestart;
    $sequence_info = tool_main_get_restart_sequence($nel_user['user_name'], $domain_id, $shard_id);
    if (!$sequence_info) {
        $sequence_info = tool_main_add_restart_sequence($nel_user['user_name'], $domain_id, $shard_id, $restart_mode);
    }
    if ($sequence_info) {
        $sql = "UPDATE " . NELDB_SHARD_TABLE . " SET shard_restart=" . $sequence_info['restart_sequence_id'] . " WHERE shard_id=" . $shard_id . " AND shard_domain_id=" . $domain_id;
        $db->sql_query($sql);
        // update shards information
        $nel_user['access']['user_shards'] = tool_admin_users_shards_get_list($nel_user['user_id']);
        $nel_user['access']['group_shards'] = tool_admin_groups_shards_get_list($nel_user['user_group_id']);
        $nel_user['access']['shards'] = tool_admin_users_groups_shards_merge();
        $tpl->assign('tool_shard_list', $nel_user['access']['shards']);
        // update shard restart information
        $AS_ShardRestart = tool_main_get_shard_data($shard_id, 'shard_restart');
        $AS_ShardDomainRestart = tool_main_get_domain_shard_restart($view_domain_id);
        $tpl->assign('tool_shard_restart_status', $AS_ShardRestart);
        $tpl->assign('tool_domain_has_shard_restart', $AS_ShardDomainRestart);
    }
    return $sequence_info;
}
예제 #2
0
파일: index.php 프로젝트: cls1991/ryzomcore
$tpl->assign('tool_domain_selected', $view_domain_id);
$tpl->assign('tool_shard_list', $nel_user['access']['shards']);
$tpl->assign('tool_shard_selected', $view_shard_id);
$tool_shard_filters = tool_main_get_shard_ids($view_shard_id);
$tpl->assign('tool_shard_filters', $tool_shard_filters);
$AS_Host = tool_main_get_domain_host($view_domain_id);
$AS_Port = tool_main_get_domain_port($view_domain_id);
$AS_Name = tool_main_get_domain_name($view_domain_id);
$AS_Application = tool_main_get_domain_data($view_domain_id, 'domain_application');
$AS_RingSQL = tool_main_get_domain_data($view_domain_id, 'domain_sql_string');
$AS_CsSQL = tool_main_get_domain_data($view_domain_id, 'domain_cs_sql_string');
$AS_ShardName = tool_main_get_shard_name($view_shard_id);
$AS_InternalName = tool_main_get_shard_as_id($view_shard_id);
$AS_ShardRestart = tool_main_get_shard_data($view_shard_id, 'shard_restart');
$AS_ShardDomainRestart = tool_main_get_domain_shard_restart($view_domain_id);
$AS_ShardLang = tool_main_get_shard_data($view_shard_id, 'shard_lang');
$tpl->assign('tool_shard_restart_status', $AS_ShardRestart);
$tpl->assign('tool_domain_has_shard_restart', $AS_ShardDomainRestart);
$tool_no_domain_lock = false;
if ($AS_InternalName == '*' && $AS_ShardDomainRestart > 0) {
    $tool_no_domain_lock = true;
    $tpl->assign('tool_no_domain_lock', $tool_no_domain_lock);
}
$tpl->assign('tool_page_title', $AS_Name . ($AS_ShardName != '' ? ' / ' . $AS_ShardName : ''));
$tool_annotation_info = tool_main_get_annotation($view_domain_id, $view_shard_id);
$tool_lock_info = tool_main_get_lock($view_domain_id, $view_shard_id);
// we check if the last activity on the lock is too old, in which case we unlock
// and only if there are no restart sequence going on (prevent loosing lock when inactive for too long during restart sequence - patch ...)
if (LOCK_TIMEOUT > 0 && is_array($tool_lock_info) && $AS_ShardRestart == 0 && !$tool_no_domain_lock) {
    $now = time();
    if ($tool_lock_info['lock_update'] + LOCK_TIMEOUT < $now) {