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?
Prozessende/Server Crash | Perfomante Lösung für die Speicherfunktionen
- Kasakow
- Geschlossen
- Erledigt
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
-
-
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 ?
-
-
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
-
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)
-
Es geht mir eher darum das wenn der Server Crasht, die letzten Daten nicht verloren gehen.
-
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
Ansonsten kannst du die Leute ja zwischenspeichern...alle 10-15min...
Und eventuell vermehrt darauf achten, nichts zu skripten, was deinen Server crasht
-
-
Hey, dein Beitrag hat mich dazu gebracht ein Plug-in genau für diese Situation zu entwickeln (ausgeschlossen sind natürlich Crashes).
Siehe hier: https://github.com/myudev/samp-graceful-exit .
Damit kannst du die Daten auch vor dem schließen nochmals Speichern -
-
-
@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. -
@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. -
breadfish.de
Hat das Thema geschlossen.