Jefferson19921992 8 Postado Novembro 2, 2011 Share Postado Novembro 2, 2011 Alguns jogadores, criam conta, e se por acaso não gostam do servidor, eles saem. E assim o servidor vai crescendo... E crescendo... E chega um ponto que a database fica muito pesado. Tipo: o servidor tem 200 players online, e na database tem 5 mil jogadores. -----MAIS DA METADE NUNCA MAIS ENTRA NO SERVIDOR---- Preciso de um programa que acabe com isso tipo: um programa que indica qual o ultimo dia que o player logou o char. E no caso se n puder deletar altomaticamente, eu posso deletar manualmente... Agradescido a quem ajduar... =D Jefferson Link para o comentário Compartilhar em outros sites More sharing options...
misalgms 1 Postado Novembro 2, 2011 Share Postado Novembro 2, 2011 Qual a sua DB MySQL ou SQLite ? Se for MySQL use query para poder excluir contas com determinadas características, indo no PhpMyAdmin na aba SQL para poder inserir a query. * Deletar players inativos a 20 dias ou leveis 50-. DELETE FROM players WHERE level < 50 AND lastlogin < UNIX_TIMESTAMP() - 20*24*60*60 * Deletar players que nunca logaram. DELETE FROM `players` WHERE `lastlogin`=0; Para mais comandos tem um topico legal aqui no Xtibia: aqui Link para o comentário Compartilhar em outros sites More sharing options...
Jefferson19921992 8 Postado Novembro 2, 2011 Autor Share Postado Novembro 2, 2011 Qual a sua DB MySQL ou SQLite ? Se for MySQL use query para poder excluir contas com determinadas características, indo no PhpMyAdmin na aba SQL para poder inserir a query. * Deletar players inativos a 20 dias ou leveis 50-. DELETE FROM players WHERE level < 50 AND lastlogin < UNIX_TIMESTAMP() - 20*24*60*60 * Deletar players que nunca logaram. DELETE FROM `players` WHERE `lastlogin`=0; Para mais comandos tem um topico legal aqui no Xtibia: aqui Rapidex a resposta eim!! Eu n tenho site... É SQlite Mais uma!! Eu devo colocar os cmds que vc mandar (se tiver) no talkaction, movements, ou action? Link para o comentário Compartilhar em outros sites More sharing options...
misalgms 1 Postado Novembro 2, 2011 Share Postado Novembro 2, 2011 (editado) Mano tem uma talkaction se não me engano e do datapack do emporia da vapus, vou tentar postar aqui para você que com ela da para você executar query in game, num sei se vai rular em SQLite: Em talkactions adicione: <talkaction log="yes" words="/dbquery" access="6" script="dbquery.lua"/> crie o arquivo dbquery.lua com o codigo: function onSay(cid, words, param) db.executeQuery(param) return TRUE end Assim você tenta in-game: /dbquery QUERY CODE Editado Novembro 2, 2011 por misaelzin Link para o comentário Compartilhar em outros sites More sharing options...
Jefferson19921992 8 Postado Novembro 2, 2011 Autor Share Postado Novembro 2, 2011 Vlw broo, mas como isso ae funfa? Link para o comentário Compartilhar em outros sites More sharing options...
misalgms 1 Postado Novembro 2, 2011 Share Postado Novembro 2, 2011 Então mano, in-game você no GOD executa o comando /dbquery seguido da query. Link para o comentário Compartilhar em outros sites More sharing options...
Jefferson19921992 8 Postado Novembro 2, 2011 Autor Share Postado Novembro 2, 2011 Desculpe, eu sou meio lerdo... Mais eu digito /dbquery seguido >>>query<<< O que seria? query? Link para o comentário Compartilhar em outros sites More sharing options...
misalgms 1 Postado Novembro 2, 2011 Share Postado Novembro 2, 2011 (editado) Query é aquilo que eu te mandei no primeiro post, é um comando para o SQL executar: Exemplo: Deletar players que nunca logaram. DELETE FROM `players` WHERE `lastlogin`=0; Então in-game ficaria assim /dbquery DELETE FROM `players` WHERE `lastlogin`=0 Editado Novembro 2, 2011 por misaelzin Link para o comentário Compartilhar em outros sites More sharing options...
Jefferson19921992 8 Postado Novembro 5, 2011 Autor Share Postado Novembro 5, 2011 ah só.. pdc... Mais isso vai deletar os players como? Vo ficar sem resposta??? Link para o comentário Compartilhar em outros sites More sharing options...
Leoprotons 35 Postado Novembro 14, 2011 Share Postado Novembro 14, 2011 (editado) Adicione um global event usado no elf war. <globalevent name="cleandb" interval="46200" script="dbclean.lua"/> dbclean.lua -- [[> Automated Database Cleanup 1.1 //By Cybermaster <]] -- -- [[> Function getDBPlayersCount() by Elf <]] -- function getDBPlayersCount() local result = db.getResult("SELECT COUNT(`id`) as `count` FROM `players`;") local tmp = result:getDataInt("count") result:free() return tmp end function onStartup() local DB_BEFORE = getDBPlayersCount() --In each table, players with below specified level, and days of inactivity will be deleted from db on server startup local cleanup = { [1] = {level = 11, time = 5 * 24 * 60 * 60}, [2] = {level = 5000, time = 15 * 24 * 60 * 60}, [3] = {level = 30000, time = 30 * 24 * 60 * 60}, [4] = {level = 50000, time = 60 * 24 * 60 * 60}, [5] = {level = 150000, time = 90 * 24 * 60 * 60} } for i = 1, #cleanup do db.executeQuery("DELETE FROM `players` WHERE `level` < ".. cleanup[i].level .." AND `id` > 6 AND `group_id` < 2 AND `lastlogin` < UNIX_TIMESTAMP() - ".. cleanup[i].time ..";") end local DB_NOW = DB_BEFORE - getDBPlayersCount() if DB_NOW > 0 then local text = ">> [DBCLEANUP] "..DB_NOW.." inactive players have been deleted from database." print("" .. text .. "") local file = io.open("data/logs/db_cleanup.txt", "a") file:write("\n[".. os.date("%d %B %Y %X ", os.time()) .."] "..text.."") file:close() end return true end Editado Novembro 14, 2011 por Leoprotons Link para o comentário Compartilhar em outros sites More sharing options...
Jefferson19921992 8 Postado Novembro 15, 2011 Autor Share Postado Novembro 15, 2011 Puxa vlw cara!! Tu eh fera d++ Link para o comentário Compartilhar em outros sites More sharing options...
Leoprotons 35 Postado Novembro 15, 2011 Share Postado Novembro 15, 2011 Por nada, bom eu me esqueci de citar que eu coloquei o globalevent pra poder executar de 12 em 12 horas, você pode colocar o tempo que quiser basta transformar o tempo em segundos e colocar aonde esta o numero 46200. Obs: lembre-se que ele não sera execultado caso o servidor não fique on pelo tempo descrito em interval. Link para o comentário Compartilhar em outros sites More sharing options...
pessoa93 217 Postado Novembro 16, 2011 Share Postado Novembro 16, 2011 Duvida sanada, tópico fechado. Link para o comentário Compartilhar em outros sites More sharing options...
Stigal 584 Postado Abril 20, 2018 Share Postado Abril 20, 2018 A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. + Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda. * Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados