Crasht nach einem GMX

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Guten Morgen zusammen,
    ich habe da mal ein "kleines" Problem, sobald ich den Server Neustarte wenn ein Spieler drauf an, Crasht der Server mir bei einem "gmx" einfach weg.
    Ist kein Spieler Online, passiert gar nichts, Startet er ganz Normal Neu ...


    Das passiert aber erst dann, wenn ich ein "command processor" nutze, Versucht hab ich es mit Pawn.CMD, sowie mit Command Processor und nun bin ich bei iZCMD angekommen ...



    Die Server Log:




    Und die crashinfo.txt haut mir raus:

  • Also ich vermute, dass wenn ein Spieler online ist und der Server down geht, der Spieler natürlich noch gespeichert werden muss.


    Das Problem ist aber, dass du vermutlich nirgends mysql_close aufrufst.


    Somit endet der Threaded Query im Nirgendwo und das crasht deinen Server.


    Also eventuell unter OnGameModeExit mysql_close verwenden oder einfach alle User Speichern bzw kicken im Befehl, dann mysql_close und dann in so einem 2 Sekunden delay den Server per "gmx" neustarten! :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich lasse das ganze via Include laufen.



    function:mysql_close_time()
    {

    mysql_close(Handle), print("[sh_MainFunciton - OnGameModeExit]: Die Verbindung zur MySQL Datenbank wurde unterbrochen!");
    return 1;
    }



    public OnGameModeExit()
    {
    /* [=== MySQL Disconnection ====] */
    foreach(new i: Player)
    {
    if(IsPlayerConnected(i))
    {
    OnPlayerDisconnect(i, 1);
    }
    }



    SetTimer("mysql_close_time", 988*2, false);



    /* [=====================================] */
    #if defined shMainFunction_OnGameModeExit
    return shMainFunction_OnGameModeExit();
    #else
    return 1;
    #endif



    }
    #if defined _ALS_OnGameModeExit
    #undef OnGameModeExit
    #else
    #define _ALS_OnGameModeExit
    #endif
    #define OnGameModeExit shMainFunction_OnGameModeExit
    #if defined shMainFunction_OnGameModeExit
    forward shMainFunction_OnGameModeExit();
    #endif



    Aktuell so gelöst, nun kann ich im Spiel den Server via gmx Neustarten ohne das er Abstürzt, führe ich aber den gmx in der Konsole aus, crasht er mir wieder weg.


    LG.

    • Bei einer foreach-Schleife loopst du nur durch Spieler die connected sind, da brauchst du das nicht mit IsPlayerConnected überprüfen :)
    • Hmmm...prüf mal mit einem print, ob das überhaupt aufgerufen wird, wenn du das in der Konsole eingibst. (bzw schau mal, ab wann er crasht?)

    Aber nur zur Info:


    • This callback will NOT be called if the server crashes or the process is killed by other means, such as using the Linux kill command or pressing the close-button on the Windows console.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Habe das Problem gelöst, lag wohl daran das ich bei der foreach Schleife noch einmal Gecheckt habe ob ein Spieler Connected ist, hab die Abfrage raus genommen und seit dem Crasht der Server nicht mehr.


    Vielen dank für die Information.


    LG.