Probleme der Performance, wenn sich ein anderer Spieler ausloggt

  • Hallöchen, ich habe folgendes Problem:
    immer wenn sich ein Spieler ausloggt von meinem DayZ Server lass ich alle Daten in der MySQL-DB abspeichern.
    Wenn sich nun ein einzelner Spieler ausloggt /disconnectet lässt sich für ca 2-3 sek kein Fenster oder ähnliches öffnen, loggen sich nun 3-4 Spieler gleichzeitig aus habe ich es auch schon häufig erlebt, dass der Server sogar einen "Networktroubel" macht. Das eigentliche Probleme ist mir auch bewusst, dass der Server zu viele Anfragen an den MySQl-Server sendet, doch ich habe keine Ahnung wie ich das Problem am besten umgehen kann. Unten findet ihr mein Aktuelles Script. Ich hoffe ihr wisst einen Rat.
    Vielen Dank im vorraus für eure Hilfe

    [tabmenu]

    [/tabmenu]


    [tabmenu]

    Lua
    local database = "DayZ";local host = "127.0.0.1";local user = "DayZ";local pass = "Zensiert";databaseConnection = dbConnect('mysql', 'dbname='..database..';host='..host, user, pass);

    [/tabmenu]


    [tabmenu]

    Lua
    function saveAccounts () 	if getElementData(source,"logedin")	then		local account = getPlayerAccount(source)		accname =  getAccountName ( account )		if account then		destroyElement(getElementData(source,"playerCol"))		if getElementData(source,"ondutyadmin") or getElementData(source,"ondutysmod") or getElementData(source,"ondutymod") then			setAccountData ( account, "lastonduty",5)		else					for i,data in ipairs(playerDataTable) do				if data[1] == "brokenbone" or data[1] == "pain" or data[1] == "drunk" or data[1] == "cold" or data[1] == "infection" or data[1] == "currentweapon_1" or data[1] == "currentweapon_2" or data[1] == "currentweapon_3" or data[1] == "bandit" then					if getElementData(source,data[1]) then 					dbExec(databaseConnection,"UPDATE userdata SET "..data[1].." = 1 WHERE accname LIKE '"..accname.."'" )					else					dbExec(databaseConnection,"UPDATE userdata SET "..data[1].." = 0 WHERE accname LIKE '"..accname.."'" )					end					else				dbExec(databaseConnection,"UPDATE userdata SET `"..data[1].."` = "..getElementData(source,data[1]).." WHERE accname LIKE '"..accname.."'" )				end			end							local x,y,z =  getElementPosition(source)				local rx,ry,rz = getElementRotation(source)				dbExec(databaseConnection,"UPDATE userdata SET last_x = "..x.." WHERE accname LIKE '"..accname.."'" )				dbExec(databaseConnection,"UPDATE userdata SET last_y = "..y.." WHERE accname LIKE '"..accname.."'" )				dbExec(databaseConnection,"UPDATE userdata SET last_z = "..z.." WHERE accname LIKE '"..accname.."'" )								dbExec(databaseConnection,"UPDATE userdata SET dimension = "..getElementDimension(source).." WHERE accname LIKE '"..accname.."'" )				dbExec(databaseConnection,"UPDATE userdata SET interio = "..getElementInterior(source).." WHERE accname LIKE '"..accname.."'" )				dbExec(databaseConnection,"UPDATE userdata SET Spawn_Rot_Z = "..rz.." WHERE accname LIKE '"..accname.."'" )									local query = dbQuery(databaseConnection,"SELECT * FROM `serverstatistik` WHERE name LIKE 'Alivetime'"  )					local result,irow = dbPoll(query,-1)					local valuetime = result[1]["wert"]					local oldplayer = result[1]["spieler"]					if getElementData(source,"alivetime") >= valuetime then					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET wert = "..getElementData(source,"alivetime").." WHERE name LIKE 'Alivetime'" ))					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET spieler =   CONCAT('"..accname.."') WHERE name LIKE 'Alivetime'" ))					outputChatBox("Der Serverrekord ´Alivetime` von "..oldplayer.." mit "..(valuetime/60).."h wurde gebrochen!",root,255,0,0,true)					outputChatBox("Neuer Rekordhalter ist "..accname.." mit "..(getElementData(source,"alivetime")/60).."h!",root,255,0,0,true)					outputChatBox("Gratulation",root,255,0,0,true)					end										local query = dbQuery(databaseConnection,"SELECT * FROM `serverstatistik` WHERE name LIKE 'Murders'"  )					local result,irow = dbPoll(query,-1)					local valuetime = result[1]["wert"]					local oldplayer = result[1]["spieler"]					if getElementData(source,"totalmurders") >= valuetime then					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET wert = "..getElementData(source,"totalmurders").." WHERE name LIKE 'Murders'" ))					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET spieler =  CONCAT('"..accname.."') WHERE name LIKE 'Murders'" ))					outputChatBox("Der Serverrekord ´Murders` von "..oldplayer.." mit "..(valuetime).." wurde gebrochen!",root,255,0,0,true)					outputChatBox("Neuer Rekordhalter ist "..accname.." mit "..(getElementData(source,"totalmurders")).."!",root,255,0,0,true)					outputChatBox("Gratulation",root,255,0,0,true)					end										local query = dbQuery(databaseConnection,"SELECT * FROM `serverstatistik` WHERE name LIKE 'Zombiekills'"  )					local result,irow = dbPoll(query,-1)					local valuetime = result[1]["wert"]					local oldplayer = result[1]["spieler"]					if getElementData(source,"totalzombieskilled") >= valuetime then					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET wert = "..getElementData(source,"totalzombieskilled").." WHERE name LIKE 'Zombiekills'" ))					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET spieler =  CONCAT('"..accname.."') WHERE name LIKE 'Zombiekills'" ))					outputChatBox("Der Serverrekord ´Zombiekills` von "..oldplayer.." mit "..(valuetime).." wurde gebrochen!",root,255,0,0,true)					outputChatBox("Neuer Rekordhalter ist "..accname.." mit "..(getElementData(source,"totalzombieskilled")).."!",root,255,0,0,true)					outputChatBox("Gratulation",root,255,0,0,true)					end									local query = dbQuery(databaseConnection,"SELECT * FROM `serverstatistik` WHERE name LIKE 'Animalkills'"  )					local result,irow = dbPoll(query,-1)					local valuetime = result[1]["wert"]					local oldplayer = result[1]["spieler"]					if getElementData(source,"totalanimalkilled") >= valuetime then					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET wert = "..getElementData(source,"totalanimalkilled").." WHERE name LIKE 'Animalkills'" ))					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET spieler =  CONCAT('"..accname.."') WHERE name LIKE 'Animalkills'" ))					outputChatBox("Der Serverrekord ´Animalkills` von "..oldplayer.." mit "..(valuetime).." wurde gebrochen!",root,255,0,0,true)					outputChatBox("Neuer Rekordhalter ist "..accname.." mit "..(getElementData(source,"totalanimalkilled")).."!",root,255,0,0,true)					outputChatBox("Gratulation",root,255,0,0,true)					end										local query = dbQuery(databaseConnection,"SELECT * FROM `serverstatistik` WHERE name LIKE 'Soldatenkills'"  )					local result,irow = dbPoll(query,-1)					local valuetime = result[1]["wert"]					local oldplayer = result[1]["spieler"]					if getElementData(source,"totalbotkilled") >= valuetime then					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET wert = "..getElementData(source,"totalbotkilled").." WHERE name LIKE 'Soldatenkills'" ))					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET spieler =  CONCAT('"..accname.."') WHERE name LIKE 'Soldatenkills'" ))					outputChatBox("Der Serverrekord ´Soldatenkills` von "..oldplayer.." mit "..(valuetime).." wurde gebrochen!",root,255,0,0,true)					outputChatBox("Neuer Rekordhalter ist "..accname.." mit "..(getElementData(source,"totalbotkilled")).."!",root,255,0,0,true)					outputChatBox("Gratulation",root,255,0,0,true)					end										local query = dbQuery(databaseConnection,"SELECT * FROM `serverstatistik` WHERE name LIKE 'Deads'"  )					local result,irow = dbPoll(query,-1)					local valuetime = result[1]["wert"]					local oldplayer = result[1]["spieler"]					if getElementData(source,"deads") >= valuetime then					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET wert = "..getElementData(source,"deads").." WHERE name LIKE 'Deads'" ))					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET spieler =  CONCAT('"..accname.."') WHERE name LIKE 'Deads'" ))					outputChatBox("Der Serverrekord ´Deads` von "..oldplayer.." mit "..(valuetime).." wurde gebrochen!",root,255,0,0,true)					outputChatBox("Neuer Rekordhalter ist "..accname.." mit "..(getElementData(source,"deads")).."!",root,255,0,0,true)					outputChatBox("Gratulation",root,255,0,0,true)					end										local query = dbQuery(databaseConnection,"SELECT * FROM `serverstatistik` WHERE name LIKE 'Servertime'"  )					local result,irow = dbPoll(query,-1)					local valuetime = result[1]["wert"]					local oldplayer = result[1]["spieler"]					if getElementData(source,"realservertime") >= valuetime then					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET wert = "..getElementData(source,"realservertime").." WHERE name LIKE 'Servertime'" ))					dbFree(dbQuery(databaseConnection,"UPDATE `serverstatistik` SET spieler =  CONCAT('"..accname.."') WHERE name LIKE 'Servertime'" ))					outputChatBox("Der Serverrekord ´Servertime` von "..oldplayer.." mit "..(valuetime/60).."h wurde gebrochen!",root,255,0,0,true)					outputChatBox("Neuer Rekordhalter ist "..accname.." mit "..(getElementData(source,"realservertime")/60).."h!",root,255,0,0,true)					outputChatBox("Gratulation",root,255,0,0,true)					end			end			end		setElementData(source,"logedin",false)		endendaddEventHandler ( "onPlayerQuit", getRootElement(), saveAccounts )

    [/tabmenu]

    8|

  • Dieses Thema enthält 2 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!