Prozessende/Server Crash | Perfomante Lösung für die Speicherfunktionen

  • Moin.
    Ich experimentiere sehr viel rum und mir ist etwas aufgefallen. Ich teste meinen Code auf einem Linux System und wenn ich den Prozess beende, dann reagiert der Server nicht schnell genug um OnPlayerDisconnect aufzurufen. Ich habe in der Wiki gelesen das es mit Ongamemodeexit nicht funktionieren wird beim Prozessende und/-oder Server Crash nicht aufgerufen. Merkt man eine 5-10 Minütige gesamt Speicherung in der Performance? Oder gibt es da eine andere Methode?

    Мозг = выключен :sleeping:

  • wenn ich den Prozess beende

    Beende den Server einfach mit dem Command exit

    Merkt man eine 5-10 Minütige gesamt Speicherung in der Performance?

    Gegenfrage, was speicherst du, dass der Server solange zum Speichern der Daten braucht ?

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Zitat von Akino Kiritani

    Gegenfrage, was speicherst du, dass der Server solange zum Speichern der Daten braucht ?

    Überhaupt nicht viel. In der Wiki steht beim Crash/Prozessende werden die Callbacks nicht ausgeführt.

    Мозг = выключен :sleeping:

  • Im Gegensatz zum Windowsserver kann man in den Serverprozess (also die Ausgabe die auf dem Bildschirm erscheint) keine RCON Befehle eingeben. Somit hast du vermutlich den Server mit STRG+C beendet. Dies killt den Server jedoch ohne wenn und aber.


    Es gibt ein Pendant zum Programm rcon.exe welches dem Windows SAMP-Server beiliegt. Dieses kann man dann verwenden um von der Shell aus den RCON Befehl exit zu senden

    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

  • Man kann auch einfach einen freundlichen Stop Befehl in den Server einbauen, der alle User speichert und dann den Server mit einer kurzen Verzögerung über [wiki]SendRconCommand[/wiki] ausschaltet. (dort dann exit oder gmx verwenden)

    ast2ufdyxkb1.png


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

  • SIGINT (Ctrl+C) sowie SIGTERM unter Linux genau sowie das equivalent unter Windows beenden innerhalb des Servers einfach nur die "Schleife" im Main Thread, daher ist es ohne zuvor den Server anzusprechen i.d.R. nicht möglich.
    Das heißt, du müsstest entweder auf Interval Speichern zurückgreifen, oder die Ideen weiter oben umsetzen. Meiner Meinung nach, macht das Intervall Speichern vorallem mit modernen MySQL Plug-ins im heutigem Zeitalter kaum noch was aus, solang dein MySQL Server nicht heavily bottlenecked ist oder du keine komplexe mathematische Aufgaben in deinen Speicher funktionen durchführst.


    Ggf. wäre es auch möglich ein Plug-in zu entwickeln der dieses Verhalten etwas "sanfter" gestaltet.


    //EDIT:
    Habe dein neuen Beitrag gerade gelesen, da bleibt dir größtenteils nur das Intervall Speichern über.. oder direkt Speichern.

  • wenn der Server Crasht

    Na, sowas sollte jetzt nicht jeden Tag passieren :D


    Ansonsten kannst du die Leute ja zwischenspeichern...alle 10-15min...


    Und eventuell vermehrt darauf achten, nichts zu skripten, was deinen Server crasht :D

    ast2ufdyxkb1.png


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

  • @Kaliber
    Bis jetzt hat mein Quellcode den Server nicht gecrasht.
    Es ist mir eben beim Prozess Killen mittels STRG + C aufgefallen und für mich ist es wie ein simulierte Servercrash. Aber ich füge dem Code echt mal eine Zwischenspeicherung hinzu. Das sollte es dann doch bringen.

    Мозг = выключен :sleeping:

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • @MyU
    Moin, habe ich es übersehen oder wo finde ich die Endprodukte deines Codes? (.so/.dll)
    Und wenn Abstürze ausgeschlossen sind, wozu genau dient dann das Plugin?
    Zum Bespiel, bei einem Rcon GMX, hat er alles ordnungsgemäß gespeichert.

    Мозг = выключен :sleeping:

  • @MyU
    Moin, habe ich es übersehen oder wo finde ich die Endprodukte deines Codes? (.so/.dll)
    Und wenn Abstürze ausgeschlossen sind, wozu genau dient dann das Plugin?
    Zum Bespiel, bei einem Rcon GMX, hat er alles ordnungsgemäß gespeichert.

    Wenn dein PAWN Script crasht kann man schlecht eine Funktion aufrufen, CTRL+C etc ist ja was anderes.
    Man könnte aber rein theoretisch dennoch irgendwas realisieren, aber ja du meintest ja CTRL+C oder Prozess exit.