Autor | Zpráva | ||
---|---|---|---|
leorond Profil |
Ahoj, na VPS mi funguje aplikace která využívá port 55903 na localhostu a já bych potřeboval kontrolovat zda je aplikace online aby v případě pádu aplikace nebo odstavení jsem mohl na webových stránkách vypsat status OFFLINE.
Vytvořil jsem si proto script ale ten se stále připojuje dokola a zapříčiní pád aplikace, při tom se ukazuje v logách aplikace tento zápis error-L1 : CloseClient INVALID_SOCKET 12:28:51 (6587)logout : [127.0.0.1] 12:28:51 Response error after connection causes conclusion (6587)()()(127.0.0.1) error-L1 : CloseClient INVALID_SOCKET 12:28:51 (6588)logout : [127.0.0.1] Můj script $GameServer['check'] = "1"; if($check = fsockopen('127.0.0.1', '55903', $ERROR_NO,$ERROR_STR, (float)0.5) and $GameServer['check'] == 1) { fclose($check); $GS_Status = "<font color='#A0FFA0'><b>ONLINE</b></font>"; } else { $GS_Status = "<font color='red'><b>OFFLINE</b></font>"; } Nevíte prosím kde by mohla být chyba? |
||
Davex Profil |
#2 · Zasláno: 25. 2. 2016, 18:59:51
leorond:
Nebylo by lepší na VPS nastavit monitorování té aplikace pomocí monit, aby se po pádu zrestartovala a nebylo nutné zobrazovat, že je nedostupná? |
||
leorond Profil |
#3 · Zasláno: 25. 2. 2016, 19:25:14
To by určitě šlo ale pouze v situaci kdy by server padl a od toho mám auto start který pokud zjistí že server není aktivní tak ho restartuje.
Ale pokud chci ověřovat zda je server ONLINE a potřebuji to dát uživatelům vědět tak je pro mne jednoduší když se na webu zobrazí rudě OFFLINE než každému zvlášť odepisovat důvod proč se nelze připojit k serveru. Jelikož lidi neradi čtou novinky a informace. |
||
leorond Profil |
Ještě bych chtěl dodat že script funguje dobře ale on mi normálně zablokuje port a nikdo se k aplikaci nedostane.
Zkusil jsem ho nahradit funkcí ale je to úplně stejné. function ErrorHandler($errno, $errmsg, $filename, $linenum, $vars) { } function CheckPortStatus($Ip, $Port, $Timeout = 0.5) { set_error_handler('ErrorHandler'); // Disable failed connection warning //error_reporting(0); if($Fp1 = fsockopen($Ip, $Port, $ERROR_NO, $ERROR_STR, (float)$Timeout)) { fclose($Fp1); return(TRUE); } else { //echo($ERROR_NO.','.$ERROR_STR); return(FALSE); } restore_error_handler(); } if(CheckPortStatus('localhost', 55903)) { echo('Online'); } else { echo('Offline'); } |
||
Časová prodleva: 9 let
|
0