Blazera 8.60
blazera.net
SOBRE O BLAZERA
Um fresh start em um servidor 8.6 clássico, com real map, focado na experiência raiz do Tibia. | Classic Real Map • Fresh Start • Client 8.6 • Old School Gameplay • Active Community
Inicia em:
--
Participar
Histórico de Curtidas
-
marsonschneider deu reputação a Cjaker em Limpar database (otimização)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!