Daten aus MySQL updaten Problem

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Vorgeschichte:
    Wir wollen beispielsweise Online Überweisungen auf der Homepage ermöglichen. Bsp. X zahlt an Y 1000 aber wird ja erst beim nächsten Login *geupdated*. Dann hatte ich die Idee einfach LoadPlayer alle 10 Sekunden ausführen zulassen für eine aktuallisierung. Das ganze sieht ungefähr so aus:


    Timer wird alle 10 Sekunden ausgeführt:

    public ReloadTimer()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    LoadPlayer(i);
    }
    }
    }


    LoadPlayer
    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SetPlayerScore(playerid, SpielerInfo[playerid][pLevel]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SetPlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdminLevel] = mysql_GetInt("accounts", "AdminLevel", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pFraktion] = mysql_GetInt("accounts", "Fraktion", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pJob] = mysql_GetInt("accounts", "Job", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pBank] = mysql_GetInt("accounts", "Bank", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pBann] = mysql_GetInt("accounts", "Bann", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pWanteds] = mysql_GetInt("accounts", "Wanteds", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pSkin] = mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]);
    SetPlayerSkin(playerid, SpielerInfo[playerid][pSkin]);
    SpielerInfo[playerid][pLeader] = mysql_GetInt("accounts", "Leader", "Name", SpielerInfo[playerid][pName]);
    }
    return 1;
    }

    Problem 1:
    Er updated trotzdem nicht sondern zeigt(getestet mit Geld) erst den neuen Wert nach einem Relog an.
    Problem 2: Alle 10 Sekunden gibts nen kurzen lagg und Spieler bleibt stehen weil er ja aktuallisiert(was ja nicht wirklich geht..)


    Gibts da irrgendne bessere Methode? Am besten ohne Laggs.
    Mfg

  • Du könntest halt eine Spalte mit "updated" machen, und dann halt nur die Funktion aufrufen, wo es wirklich gebraucht wird.
    D. h. Timer raus!
    und bei einer Überweisung updated auf 1 setzen