SA-MP Forums Archive
[Ajuda] Limpar accounts que nгo logam MYSQL - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Limpar accounts que nгo logam MYSQL (/showthread.php?tid=608663)



Limpar accounts que nгo logam MYSQL - maikons - 03.06.2016

Vi um tуpico aqui falando de quantas contas tem no seu servidor e percebi que tenho 550 contas num total de 5 players ativos, preciso limpar o MYSQL pq esse peso todo desnecessario nгo й bom...

Minha ideia era pegar o ultimologin e dependendo da experiencia(horas online) ir deletando os jogadores
Onplayerdisconnect
Код:
lastlogin[playerid] = gettime() + (1 * 86400);
Como faria pra ongamemodeinit checar as contas e seus dias sem logar
Код:
if(experience[playerid] <= 50 && nologindays >= 15) {
 deleta pra ficar mais leve
}
else if(experience[playerid] >= 51 && experience[playerid] <= 100 && nologindays >= 30) {
 deleta pra ficar mais leve
}
else if(experience[playerid] >= 101 && experience[playerid] <= 250 && nologindays >= 90) {
 deleta pra ficar mais leve
}
else if(experience[playerid] >= 251 && experience[playerid] <= 500 && nologindays >= 120) {
 deleta pra ficar mais leve
}
else if(experience[playerid] >= 501 && nologindays >= 360) {
 deleta pra ficar mais leve
}



Re: Limpar accounts que nгo logam MYSQL - zSuYaNw - 03.06.2016

Quote:
Originally Posted by Lordzy
Посмотреть сообщение
pawn Код:
"CREATE EVENT `autoaccountremoval` \
ON SCHEDULE EVERY 1 MONTH \
STARTS NOW() \
DO \
DELETE FROM `usertable` WHERE UNIX_TIMESTAMP() >= `lastonline`+ 2678400"
The above query will delete accounts if they're inactive for more than a month. 2678400 = 1 month, in seconds.
Olhe esse pequeno tutorial..


Re: Limpar accounts que nгo logam MYSQL - F1N4L - 03.06.2016

Baseie-se
https://sampforum.blast.hk/showthread.php?tid=607728


Re: Limpar accounts que nгo logam MYSQL - maikons - 03.06.2016

Vlw, vou dar um rep pra cada um

To indo pelo caminho certo?
Alguйm me da mais uma luz fazendo favor?
Код:
forward HoraPayDay(); public HoraPayDay() {
	new h, m, s;
	gettime(h, m, s);
	if (h == 00 && m == 00 || h == 01 && m == 00 ||	h == 02 && m == 00 || h == 03 && m == 00 ||	h == 04 && m == 00 || h == 05 && m == 00 ||	h == 06 && m == 00 || h == 07 && m == 00 || 
		h == 08 && m == 00 || h == 09 && m == 00 || h == 10 && m == 00 || h == 11 && m == 00 || h == 12 && m == 00 || h == 13 && m == 00 || h == 14 && m == 00 || h == 15 && m == 00 || 
		h == 16 && m == 00 || h == 17 && m == 00 || h == 18 && m == 00 || h == 19 && m == 00 || h == 20 && m == 00 || h == 21 && m == 00 || h == 22 && m == 00 || h == 23 && m == 00
	){
		if(h == 07 && m == 00) { // globalSaveHour
			day = 86400
			if(experience[playerid] <= 50 && gettime() >= lastlogin[playerid] + 15 * day) {
				
			}
			else if(experience[playerid] <= 51 && experience[playerid] <= 100 && gettime() >= lastlogin[playerid] + 30 * day) {
				
			}
			else if(experience[playerid] <= 101 && experience[playerid] <= 250 && gettime() >= lastlogin[playerid] + 90 * day) {

			}
			else if(experience[playerid] <= 251 && experience[playerid] <= 500 && gettime() >= lastlogin[playerid] + 120 * day) {

			}
			else if(experience[playerid] >= 501 && gettime() >= lastlogin[playerid] + 360 * day) {

			}
			new MySQL_Format[200];
			mysql_query(ConnectMYSQL,"DELETE FROM `accounts` `lastlogin` < '%i'", VALOR );
			mysql_function_query(ConnectMYSQL, MySQL_Format, false, "", "");
		}
		tevepdextra = 0;
		PayDay();
		SetHora();
    }
    return 1;
}



Re: Limpar accounts que nгo logam MYSQL - zSuYaNw - 03.06.2016

Cara, para te dar 100% de certeza somente testando o cуdigo. Afirmar algo apenas olhando nunca irб ter certeza alguma.


Re: Limpar accounts que nгo logam MYSQL - Dayvison_ - 03.06.2016

Nгo vai, vou desenvolver algo e lhe passo aguarde.


Re: Limpar accounts que nгo logam MYSQL - Dayvison_ - 03.06.2016

PHP код:
<?php
    $link 
mysql_connect('IP''User''Pass');
    
mysql_select_db('DB'$link);

    
$EXP = array(
        
50,
        
100,
        
250,
        
500
    
);
    
$TEMPO = array(
        
15 86400,
        
30 86400,
        
90 86400,
        
120 86400,
        
360 86400
    
);
    
$query "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " $TEMPO[1] .") AND `experience` <=" $EXP[1];
    
mysql_query($query);
    
$num mysql_affected_rows();
    echo 
"$num rows deletadas que nгo logaram nos ultimos 15 dias, com experiencia menor que 50";
    
$query "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " $TEMPO[2] .") AND `experience` <=" $EXP[2];
    
mysql_query($query);
    
$num mysql_affected_rows();
    echo 
"$num rows deletadas que nгo logaram nos ultimos 30 dias, com experiencia menor que 100";
    
$query "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " $TEMPO[3] .") AND `experience` <=" $EXP[3];
    
mysql_query($query);
    
$num mysql_affected_rows();
    echo 
"$num rows deletadas que nгo logaram nos ultimos 90 dias, com experiencia menor que 250";
    
$query "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " $TEMPO[4] .") AND `experience` <=" $EXP[4];
    
mysql_query($query);
    
$num mysql_affected_rows();
    echo 
"$num rows deletadas que nгo logaram nos ultimos 120 dias, com experiencia menor que 500";
    
$query "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " $TEMPO[5] .")";
    
mysql_query($query);
    
$num mysql_affected_rows();
    echo 
"$num rows deletadas que nгo logaram nos ultimos 360 dias, com qualquer experiencia";
Fiz em PHP, use cron jobs para usa-la a determinada tempo, se vocк optar por transcrever o cуdigo em pawn, caso sua base de dados seja muito grande й provavel que sobrecarregue o plugin por alguns segundos/minutos


Re: Limpar accounts que nгo logam MYSQL - maikons - 04.06.2016

Quote:
Originally Posted by Day_
Посмотреть сообщение
PHP код:
<?php
    $link 
mysql_connect('IP''User''Pass');
    
mysql_select_db('DB'$link);
    
$EXP = array(
        
50,
        
100,
        
250,
        
500
    
);
    
$TEMPO = array(
        
15 86400,
        
30 86400,
        
90 86400,
        
120 86400,
        
360 86400
    
);
    
$query "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " $TEMPO[1] .") AND `experience` <=" $EXP[1];
    
mysql_query($query);
    
$num mysql_affected_rows();
    echo 
"$num rows deletadas que nгo logaram nos ultimos 15 dias, com experiencia menor que 50";
    
$query "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " $TEMPO[2] .") AND `experience` <=" $EXP[2];
    
mysql_query($query);
    
$num mysql_affected_rows();
    echo 
"$num rows deletadas que nгo logaram nos ultimos 30 dias, com experiencia menor que 100";
    
$query "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " $TEMPO[3] .") AND `experience` <=" $EXP[3];
    
mysql_query($query);
    
$num mysql_affected_rows();
    echo 
"$num rows deletadas que nгo logaram nos ultimos 90 dias, com experiencia menor que 250";
    
$query "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " $TEMPO[4] .") AND `experience` <=" $EXP[4];
    
mysql_query($query);
    
$num mysql_affected_rows();
    echo 
"$num rows deletadas que nгo logaram nos ultimos 120 dias, com experiencia menor que 500";
    
$query "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " $TEMPO[5] .")";
    
mysql_query($query);
    
$num mysql_affected_rows();
    echo 
"$num rows deletadas que nгo logaram nos ultimos 360 dias, com qualquer experiencia";
Fiz em PHP, use cron jobs para usa-la a determinada tempo, se vocк optar por transcrever o cуdigo em pawn, caso sua base de dados seja muito grande й provavel que sobrecarregue o plugin por alguns segundos/minutos
Vlw +rep
To estudando PHP, й muito simples...
O unico problema й que o host que eu tenho pro meu sv de samp, nгo tenho acesso ao terminal pra criar a cron jobs, mas sobre oq vc falou de sobrecarregar se eu usar pawn... Entгo era melhor eu fazer isso ao iniciar o sv certo?

Me da um help pra fazer uma funзгo pra ongamemodeinit como a que vocк fez? Precisaria de um loop ou o que?
To tentando aqui
Код:
foward CleanDB(); public CleanDB() {
    $link = mysql_connect('IP', 'User', 'Pass');
    mysql_select_db('DB', $link);

    new EXP[4];
    EXP[1] = 50;
    EXP[2] = 100;
    EXP[3] = 250;
    EXP[4] = 500;

    new TEMPO[5];
    TEMPO[1] = 15 * 86400;
    TEMPO[2] = 30 * 86400;
    TEMPO[3] = 90 * 86400;
    TEMPO[4] = 120 * 86400;
    TEMPO[5] = 360 * 86400;

    $query = "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " , TEMPO[1] .") AND `experience` <=" , EXP[1];
    mysql_query($query);
    $num = mysql_affected_rows();
    print("$num rows deletadas que nгo logaram nos ultimos 15 dias, com experiencia menor que 50");


    $query = "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " , TEMPO[2] .") AND `experience` <=" , EXP[2];
    mysql_query($query);
    $num = mysql_affected_rows();
    print("$num rows deletadas que nгo logaram nos ultimos 30 dias, com experiencia menor que 100");


    $query = "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " , TEMPO[3] .") AND `experience` <=" , EXP[3];
    mysql_query($query);
    $num = mysql_affected_rows();
    print("$num rows deletadas que nгo logaram nos ultimos 90 dias, com experiencia menor que 250");


    $query = "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " , TEMPO[4] .") AND `experience` <=" , EXP[4];
    mysql_query($query);
    $num = mysql_affected_rows();
    print("$num rows deletadas que nгo logaram nos ultimos 120 dias, com experiencia menor que 500");


    $query = "DELETE * FROM `accounts` WHERE `lastlogin` UNIX_TIMESTAMP() >= (`lastlogin` + " , TEMPO[5] .")";
    mysql_query($query);
    $num = mysql_affected_rows();
    print("$num rows deletadas que nгo logaram nos ultimos 360 dias, com qualquer experiencia");
}



Re: Limpar accounts que nгo logam MYSQL - maikons - 05.06.2016

up!!!


Re: Limpar accounts que nгo logam MYSQL - maikons - 09.06.2016

up!!!!!!!!