Postado Agosto 17, 2017 7 anos Este é um post popular. Salve galera, mais um script para quem está precisando dar aquela limpada no banco de dados e otimizar o Servidor. Crie um script chamado cleandatabase.lua na pasta globalevents/scripts e cole isso dentro dele.-- Especificações -- -- TFS 1.1+ -- Objetivo é limpar as contas inativas/vazias e os players juntamente, assim removendo os usuários que estão inativos e ocupando espaço no banco de dados, isso é útil pela questão do processamento e comunicação do Servidor com o banco de dados, quanto mais clean, mais rápido será as operações. --[[ Clean Database by Cjaker ]]-- local inactiveMonths = 3 local createdMonths = 1 local function clearInactivePlayers() local totalClear = 0 local inactiveTimestamp = os.time() - (86400 * (inactiveMonths*30)) local query = "SELECT * FROM accounts" local resultId = db.storeQuery(query) if resultId ~= false then repeat local haveActive = false local accId = result.getDataInt(resultId, "id") local players = db.storeQuery("SELECT * FROM `players` WHERE `account_id` = " ..accId) if players ~= false then repeat local lastLogin = result.getDataInt(players, "lastlogin") if lastLogin ~= 0 and lastLogin <= inactiveTimestamp then db.query("DELETE FROM `players` WHERE `id` = " ..result.getDataInt(players, "id")) totalClear = totalClear + 1 else haveActive = true end until not result.next(players) result.free(players) if not haveActive then db.query("DELETE FROM `accounts` WHERE `id` = " ..accId) end end until not result.next(resultId) end result.free(resultId) return totalClear end local function clearEmptyAccounts() local totalClear = 0 local createdTimestamp = os.time() - (86400 * (createdMonths*30)) local query = "SELECT * FROM `accounts`" local resultId = db.storeQuery(query) if resultId ~= false then repeat local accId = result.getDataInt(resultId, "id") local createDate = result.getDataInt(resultId, "creation") if createDate <= createdTimestamp and db.storeQuery("SELECT * FROM players WHERE account_id = " ..accId) == false then db.query("DELETE FROM `accounts` WHERE `id` = " ..accId) totalClear = totalClear + 1 end until not result.next(resultId) end result.free(resultId) return totalClear end function onStartup() print('>> ' ..clearEmptyAccounts().. " contas vazias deletadas.") print('>> ' ..clearInactivePlayers().. " players inativos deletados.") end Em globalevents.xml insira essa linha <globalevent type="startup" name="CleanDatabases" script="cleandatabase.lua" /> Deixe seu REP+ para incentivar meu trabalho e publicar mais scripts interessantes como esse, valeu e bom uso!
Postado Agosto 17, 2017 7 anos Script pra qual versão do TFS? O que ele vai limpar da database? Especifique no tópico para o pessoal ficar mais inteirado sobre ele.
Postado Agosto 17, 2017 7 anos Autor 4 minutos atrás, Matk disse: Script pra qual versão do TFS? O que ele vai limpar da database? Especifique no tópico para o pessoal ficar mais inteirado sobre ele. Feito!
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.