Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] Autonomiczne wyłączanie serwera gdy połącze z MySQL zostanie zerwane?


macjoker007

Rekomendowane odpowiedzi

Opublikowano

Otóż, mam parę pluginów które wymagają MySQL i czasami mam problem z łączem i sygnał zanika wtedy serwer traci dostęp do MySQL i dane się nie zapisują, wtedy bezpowrotnie zanikają przez co serwer ma luki. Co z tym zrobić? Prosił bym o szybką odpowiedź.

opencraft.pl << { na takim jeszcze nie grałeś }

TDepLbR.gif

Opublikowano

Dodac pluginow ktore lacza sie z mysql opcje ktora bedzie sprawdzac czy mysql jest aktywny. Jezeli nie to wylacza serwer

Właśnie wiem, mimo długotrwałych poszukiwań nie znalazłem takiego plugina. Dlatego też proszę o pomoc!

opencraft.pl << { na takim jeszcze nie grałeś }

TDepLbR.gif

Opublikowano

Stworz skrypt/program ktory bedzie sprawdzal polaczenie z baza danych, I dodaj go do crona co minute

//Z telefonu

Nie będę instalował pluginu skript.

 

 

 

Podłącz na bazy mysql serwera to nie powinno przerywać połączenia.

Dobrze, tylko jak?

opencraft.pl << { na takim jeszcze nie grałeś }

TDepLbR.gif

Opublikowano

Jeśli masz maszynę dedykowaną na której stoi Twój serwer, to zainstaluj po prostu serwer mysql, a następnie się podłącz pod niego.

Wtedy będzie o wiele mniejsze ryzyko utraty danych, z powodu braku połączenia. :)

Opublikowano

Jeśli masz maszynę dedykowaną na której stoi Twój serwer, to zainstaluj po prostu serwer mysql, a następnie się podłącz pod niego.

Wtedy będzie o wiele mniejsze ryzyko utraty danych, z powodu braku połączenia. :)

To wiedziałem, ale dzięki.

opencraft.pl << { na takim jeszcze nie grałeś }

TDepLbR.gif

Opublikowano

Nie wiem, czy się śmiać czy płakać. Chodzi o skrypt shellowy...

Zauważ napisałem "Plugin Skript" a nie "Skript Shellowy" :/

opencraft.pl << { na takim jeszcze nie grałeś }

TDepLbR.gif

Opublikowano

Sprawdzasz czy dany proces istnieje(jest w użyciu) jak nie to zabijasz(wyłączasz) jave.

Dobrze, ale zanim ja zabije proces to przepadnie tyle danych że zmiany bd nie odwracalne.

opencraft.pl << { na takim jeszcze nie grałeś }

TDepLbR.gif

Opublikowano

Jeżeli chcesz zrobić to w pluginie to możesz użyć kodu stąd: https://www.youtube.com/watch?v=xwpl9MYrpTk

użyć np. metody wczytaj bazę.

Czyli np.

Tworzysz projekt

dajesz wsparcie do configu (pobierasz dane serwera mysql)

wrzucasz stworzoną przeze mnie klasę do swojego pluginu.

Wykonujesz metodę w onEnable() która przypisuje dane z configu

Tworzysz prosty Task (powtarzające się zadanie), który będzie łączył się próbując ustanowić połączenie.(Co jakiś określony czas np. co minutę)

Tu przykład modyfikacji metody wczytaj bazę do twoich potrzeb:

	public  static void wczytajBaze() {
		 try {
		  Connection conn = DriverManager.getConnection(url+baza, login, password;		  Statement st = conn.createStatement(); 
		 } catch (SQLException e) {
		  System.out.println("Uwaga! Mamy problemy z połączeniem! Wylaczam serwer");
                  //Tu mozesz dodac takze, ile razy ma sprobowac zanim wylaczy if 3 proby
                  //shutdown. Czyli jakaś zmienna, do której dodajesz 1 kiedy wyłapie
                  // SQLException
                  Bukkit.shutdown();
		 }
		}

Jeżeli masz podstawy pisania pluginów to jesteś wstanie napisać coś takiego może w 30 minut.

Opublikowano

Jeżeli chcesz zrobić to w pluginie to możesz użyć kodu stąd: https://www.youtube.com/watch?v=xwpl9MYrpTk

użyć np. metody wczytaj bazę.

Czyli np.

Tworzysz projekt

dajesz wsparcie do configu (pobierasz dane serwera mysql)

wrzucasz stworzoną przeze mnie klasę do swojego pluginu.

Wykonujesz metodę w onEnable() która przypisuje dane z configu

Tworzysz prosty Task (powtarzające się zadanie), który będzie łączył się próbując ustanowić połączenie.(Co jakiś określony czas np. co minutę)

Tu przykład modyfikacji metody wczytaj bazę do twoich potrzeb:

	public  static void wczytajBaze() {
		 try {
		  Connection conn = DriverManager.getConnection(url+baza, login, password;		  Statement st = conn.createStatement(); 
		 } catch (SQLException e) {
		  System.out.println("Uwaga! Mamy problemy z połączeniem! Wylaczam serwer");
                  //Tu mozesz dodac takze, ile razy ma sprobowac zanim wylaczy if 3 proby
                  //shutdown. Czyli jakaś zmienna, do której dodajesz 1 kiedy wyłapie
                  // SQLException
                  Bukkit.shutdown();
		 }
		}

Jeżeli masz podstawy pisania pluginów to jesteś wstanie napisać coś takiego może w 30 minut.

Dzięki, ale nie bd uczył się javy tylko po to żeby napisać jeden plugin... No trudno bd musiał skorzystać z sqlite. Chyba że będziesz tak miły i napiszesz plugin?

opencraft.pl << { na takim jeszcze nie grałeś }

TDepLbR.gif

Opublikowano

Ooo... Dziękuje, jeszcze mógłbyś to wrzucić na bukkit.org ^^!

 

A, mam pytanie co robi to "odliczanie: 15"?

I czy wył serwer od razu po zerwaniu połaczenia? Nie mg sobie pozwolić na choćby sekundowe opóźnienie, bo mi wtedy cenne dane przepadną.

opencraft.pl << { na takim jeszcze nie grałeś }

TDepLbR.gif

Opublikowano

Ooo... Dziękuje, jeszcze mógłbyś to wrzucić na bukkit.org ^^!

 

A, mam pytanie co robi to "odliczanie: 15"?

I czy wył serwer od razu po zerwaniu połaczenia? Nie mg sobie pozwolić na choćby sekundowe opóźnienie, bo mi wtedy cenne dane przepadną.

jak dasz odliczanie na 0 to od razu wyłączy serwer. Jest to tylko po to, gdy masz graczy na serwerze i żeby ich jakoś powiadomić o restarcie. Dałem, na wszelki wypadek ;p

Opublikowano

Ten plugin co kolega Ci napisał. Sprawdza co 60 sekund, czy jest połączenie z bazą, jeśli nie ma jest wykonywane odliczanie do wyłączenia serwera.

Czyli w tym przykładzie, po 15 sekundach powinien się wyłączyć. :)

 

Edit

@Up szybszy..

Opublikowano

jak dasz odliczanie na 0 to od razu wyłączy serwer. Jest to tylko po to, gdy masz graczy na serwerze i żeby ich jakoś powiadomić o restarcie. Dałem, na wszelki wypadek ;p

Ale na pewno nie stracę żadnych danych?

 

P.S - Muszę być pewien?

opencraft.pl << { na takim jeszcze nie grałeś }

TDepLbR.gif

Opublikowano

Ale na pewno nie stracę żadnych danych?

 

P.S - Muszę być pewien?

No plugin co minutę sprawdza połączenie i jak sprawdzi to od razu wyłącza serwer.

Opublikowano

Czyli jak np. sprawdzi a zerwie sie 1 sekunde po sprawdzeniu to dopiero przy nastepnym sprawdzeniu wylaczy serwer?

No tak. Chyba dodam, żeby można było sobie ustalić.

@edit Dodano możliwość ustalenia interval (okresu pomiędzy sprawdzeniem połączenia) (trzeba ponownie wygenerować config)

Opublikowano

No tak. Chyba dodam, żeby można było sobie ustalić.

@edit Dodano możliwość ustalenia interval (okresu pomiędzy sprawdzeniem połączenia) (trzeba ponownie wygenerować config)

Czyli muszę ustawić "odliczanie: 0" & "CheckInterval: 0"?

Pytam tak dla pewności.

opencraft.pl << { na takim jeszcze nie grałeś }

TDepLbR.gif

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...