[Ajuda] Close Server nгo funciona
#1

Estou com problema ao finalizar servidor se tiver salvando dados antes:
PHP код:
CMD:shutdown(playerid) {
    
shutdownserver();
    return 
1;
}
forward shutdownserver();
public 
shutdownserver() {
    
SendRconCommand("exit");
    return 
1;
}
public 
OnGameModeExit() {
    
printf("1");
    
printf("2");
    
SalvarCasas();
    
printf("3");
    
SalvarGangs();
    
printf("4");
    
SalvarAtores();
    
printf("5");
    
SalvarEquipe();
    
printf("6");
    
SalvarVeiculos();
    
printf("7");
    
SalvarCaixas();
    
printf("8");
    
SalvarRadares();
    
printf("9");
    
SalvarGZs();
    
printf("10");
    
SalvarRoubos();
    
printf("11");
    
SalvarEmpresas();
    
printf("12");
    
mysql_close(ConnectMYSQL);
    
printf("13");
    return 
1;

Nos logs ficam:
Код:
[02:43:08] --- Server Shutting Down.
[02:43:08] 1
[02:43:08] 2
[02:43:08] 3
[02:43:08] 4
[02:43:09] 5
[02:43:09] 6
[02:43:09] 7
[02:43:09] 8
[02:43:09] 9
[02:43:09] 10
[02:43:09] 11
[02:43:09] 12
Mas nгo chega no 13, e nгo desliga nunca


Se eu deixar:
PHP код:
public OnGameModeExit() {
    
mysql_close(ConnectMYSQL);
    
printf("13");
    return 
1;

Desliga de boa...
O que pode ser?
Reply
#2

O MySQL fecha a conexгo e outras queries continuam sendo executadas, causando vбrios erros.

Tente:
PHP код:
CMD:shutdown(playerid)
{
    
shutdownserver(0);
    return 
1;
}

forward shutdownserver(step);
public 
shutdownserver(step)
{
    if(
step == 0)
    {
        
printf("1");
        
printf("2");
        
SalvarCasas();
        
printf("3");
        
SalvarGangs();
        
printf("4");
        
SalvarAtores();
        
printf("5");
        
SalvarEquipe();
        
printf("6");
        
SalvarVeiculos();
        
printf("7");
        
SalvarCaixas();
        
printf("8");
        
SalvarRadares();
        
printf("9");
        
SalvarGZs();
        
printf("10");
        
SalvarRoubos();
        
printf("11");
        
SalvarEmpresas();
        
printf("12");

        
SetTimerEx("shutdownserver"3000false"i"1);
    }
    else if(
step == 1)
    {
        
mysql_close(ConnectMYSQL);
        
printf("13");
        
         
SetTimerEx("shutdownserver"3000false"i"2);
    }
    else
    {
        
SendRconCommand("exit");
    }
    return 
1;

Reply
#3

PHP код:
CMD:shutdown(playerid) {
    
shutdownserver();
    return 
1;
}
forward shutdownserver();
public 
shutdownserver() {
    
SendRconCommand("exit");
    return 
1;

Nгo seria melhor utilizar:

PHP код:
CMD:shutdown(playerid)
{
    
SendRconCommand("exit");
    return 
1;

Reply
#4

Nгo @SpikeCompiler eu preciso й justamente salvar o servidor ao reiniciar.

@RodrigoMSR obrigado...
Mas com timer ainda tб bugado

Nгo teria como eu fazer tipo assim:
PHP код:
forward SalvarCasas(typeSS);
public 
SalvarCasas(typeSS) {
    new 
query[1030];
    for(new 
houseid 1houseid MAX_HOUSEShouseid++) {
        
mysql_format(ConnectMYSQLquerysizeof(query), "UPDATE `houses` SET `hType` = '%d', `hOwner` = '%d', `hOutPosX` = '%f', `hOutPosY` = '%f', `hOutPosZ` = '%f', `hLocked` = '%d', `hAlarm` = '%d', `hLockLVL` = '%d', `hArrombada` = '%d', `hMoney` = '%d', `hMaconha` = '%d', `hMaterial` = '%d', `hPassword` = '%d', `FHQ` = '%d' WHERE `hID` = '%i'",
            
HouseInfo[houseid][hType],
            
HouseInfo[houseid][hOwner],
            
HouseInfo[houseid][hOutPosX],
            
HouseInfo[houseid][hOutPosY],
            
HouseInfo[houseid][hOutPosZ],
            
HouseInfo[houseid][hLocked],
            
HouseInfo[houseid][hAlarm],
            
HouseInfo[houseid][hLockLVL],
            
HouseInfo[houseid][hArrombada],
            
HouseInfo[houseid][hMoney],
            
HouseInfo[houseid][hMaconha],
            
HouseInfo[houseid][hMaterial],
            
HouseInfo[houseid][hPassword],
            
HouseInfo[houseid][FHQ],
        
houseid);
        
mysql_pquery(ConnectMYSQLquery);
    }
    if(
typeSS 0) {
        if(
acabou_de_salvar_casas) {
            
SalvarGangs(typeSS);
        }
        
/* ao inves de
        SetTimerEx("SalvarGangs", TIME_SAVE_STEP, false, "i", typeSS);
        */
    
}

Dai ia salvando passo a passo atй chegar no ultimo e salvar tudo.
Reply
#5

Vocк estб usando queries paralelas, nгo tem como fazer esse passo-a-passo, sу usando mysql_query. Ainda sim o timer serб necessбrio depois de mysql_close.

Se ainda nгo resolveu com os timers, aumente o tempo para 8000ms e remova mysql_close da OnGameModeExit.
Reply
#6

Quote:
Originally Posted by RodrigoMSR
Посмотреть сообщение
Vocк estб usando queries paralelas, nгo tem como fazer esse passo-a-passo, sу usando mysql_query. Ainda sim o timer serб necessбrio depois de mysql_close.

Se ainda nгo resolveu com os timers, aumente o tempo para 8000ms e remova mysql_close da OnGameModeExit.
Muito obrigado, desse jeito e colocando um timer de 30 segundos pra cada funзгo eu consegui salvar +rep
Mas pode ter algumas osciladas ou algum problema e pode cagar tudo, poderia me explicar qual melhor jeito de fazer tudo salvar integrado? aguardando outro save acabar?
Reply
#7

Sу se usar mysql_tquery nos saves e uma no final de tudo que vai chamar uma callback para dar mysql_close.

PHP код:
//para fechar
shutdownserver(0);
forward query_CloseMySQL();
public 
query_CloseMySQL()
{
    
mysql_close(ConnectMYSQL);
    
SetTimerEx("shutdownserver"5000false"i"1);
    return 
1;
}
forward shutdownserver(step);
public 
shutdownserver(step)
{
    if(
step == 0)
    {
        
SalvarCasas(); //lembrando, todos os saves tem que estar em mysql_tquery
        
SalvarGangs();
        
SalvarAtores();
        
SalvarEquipe();
        
SalvarVeiculos();
        
SalvarCaixas();
        
SalvarRadares();
        
SalvarGZs();
        
SalvarRoubos();
        
SalvarEmpresas();
        
mysql_tquery(ConnectMYSQL"SELECT 1""query_CloseMySQL");
    }
    else
    {
        
SendRconCommand("exit");
    }
    return 
1;

Reply
#8

Quote:
Originally Posted by RodrigoMSR
Посмотреть сообщение
Sу se usar mysql_tquery nos saves e uma no final de tudo que vai chamar uma callback para dar mysql_close.

PHP код:
//para fechar
shutdownserver(0);
forward query_CloseMySQL();
public 
query_CloseMySQL()
{
    
mysql_close(ConnectMYSQL);
    
SetTimerEx("shutdownserver"5000false"i"1);
    return 
1;
}
forward shutdownserver(step);
public 
shutdownserver(step)
{
    if(
step == 0)
    {
        
SalvarCasas(); //lembrando, todos os saves tem que estar em mysql_tquery
        
SalvarGangs();
        
SalvarAtores();
        
SalvarEquipe();
        
SalvarVeiculos();
        
SalvarCaixas();
        
SalvarRadares();
        
SalvarGZs();
        
SalvarRoubos();
        
SalvarEmpresas();
        
mysql_tquery(ConnectMYSQL"SELECT 1""query_CloseMySQL");
    }
    else
    {
        
SendRconCommand("exit");
    }
    return 
1;

Muito obrigado mano!!!!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)