Ver Mensaje Individual
  #1  
Antiguo 05-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 280
Reputación: 2
navbuoy Va por buen camino
Codigo PHP para caja de control de Servidor/Jugadores de Stardust

Os pongo como lo he hecho (y funciona de lujo) para visualizar en la pagina web tanto el estado del server como los jugadores online

Código:
<?php
//////////Utilizo 2 connexiones, una para comprobar que el server funciona y la otra para recuperar el numero de jugadores conectados
/////////////aunque podria hacerse solo con 1 conexion y listo /////////////////////////////////////////////////////////////////////////////

$servername = "localhost";
$username = "nombre_de_usuario_de_la_BD";
$password = "contraseña";
$dbname = "nombre_de_la_BD";

$servername2 = "localhost";
$username2 = "usuario";
$password2 = "contraseña";
$dbname2 = "nombre_de_la_BD";
$fila = 0;

// Crear conexión
$conn2 = new mysqli($servername2, $username2, $password2, $dbname2);
$conn2->set_charset("utf8mb4");

// Verificar conexión
if ($conn2->connect_error) {
    //die("Conexión fallida: " . $conn->connect_error);
}

else {
$nombre_tabla2 = "JUGADORES_ONLINE";
$consulta2 = "SELECT * FROM $nombre_tabla2 LIMIT 1;";
$resultado2 = mysqli_query($conn2, $consulta2);
 
 if($resultado2)
          {
		
                if($resultado2->num_rows === 0)
                 {
                   echo "<center><img src='error_icon.png' width='60' height='60' align='absmiddle'/><p class='style30'> The PLAYERS NOT FOUNDED<br></p></center>";
				   }
				   
				else {
			             $fila = mysqli_fetch_assoc($resultado2);	       
					   }   
		
		     }
		  
	}


// Crear conexión
$conn = new mysqli($servername, $username, $password, $dbname);


// Verificar conexión (si conecta es que el server esta funcionando)

if ($conn->connect_error) {
	echo "<center>";
    echo "<table width='669' height='210' border='0'>";
    echo "<tr>";
    echo "<td class='servidor_desconectado' width='644' height='208' background='box_server_status_disconected.png'>&nbsp;<BR></td>";
    echo "</tr>";
    echo "</table>";
	echo "</center>";

	$conn->close();
}
else {
    //echo "Éxito: El servidor MySQL está activo y funcionando.";
	echo "<center>";
    echo "<table width='669' height='210' border='0'>";
    echo "<tr>";
    echo "<td class='servidor_conectado' width='644' height='208' background='box_server_status_conected.png'><BR><BR><BR><p align='center' class='style95'>" . $fila['NUM_PLAYERS'] . "</p></td>";
    echo "</tr>";
    echo "</table>";
	echo "</center>";

		$conn->close();
}
?>
utilizo estos 3 graficos (mostrara uno u otro dependiendo de si funciona el server o no)








Styles:

Código:
        .servidor_conectado {
            background: url('box_server_status_conected.png'); /* Anula el degradado */
			background-repeat: no-repeat;
            color: black; /* Cambia el color del texto */
			border: transparent;
		}			
		
        .servidor_desconectado {
            background: url('box_server_status_disconected.png'); /* Anula el degradado */
			background-repeat: no-repeat;
            color: black; /* Cambia el color del texto */
			border: transparent;
		}
la tabla de JUGADORES_ONLINE solo tiene 3 campos Id (auto_increment) pero solo hay 1 registro siempre, NUMERO_JUGADORES (int) y Fecha (Date)

luego como ultimo paso, hice el Stored Procedure para calzarlo en Tareas Programadas (CRON) del Server donde esta la BD para cada 15 minutos actualizar el registro de jugadores online

Código:
DELIMITER $$

USE `BASE_DE_DATOS_AQUI`$$

DROP PROCEDURE IF EXISTS `Stardust_Jugadores_Online`$$

CREATE DEFINER=`usuario`@`%` PROCEDURE `Stardust_Jugadores_Online`()
BEGIN
    DECLARE suma_total DECIMAL(10, 0);
    -- Sumar los valores de campo_a_sumar cuando condicion_campo es 1
    SELECT COALESCE(SUM(status_online), 0) INTO suma_total
    FROM (AQUI LA TABLA DE USUARIOS DEL JUEGO DONDE ESTA EL CAMPO QUE INDICA SI ESTAN ONLINE o NO con 0 y 1
    WHERE status_online = 1;
    -- Insertar el resultado en la tabla resultados_suma
    TRUNCATE TABLE PLAYERS_ONLINE;
    INSERT INTO PLAYERS_ONLINE (NUM_PLAYERS, Fecha)
    VALUES (suma_total, CURDATE());
    END$$

DELIMITER ;
y lo ultimo seria el comando CRON en el Servidor en el panel de control del server

Código:
///// Comando CRON para actualizar el contador de Players Conectados de Stardust
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

*/15 * * * * mysql -u base_de_datos_aqui -p'contraseña' -D usuario_aqui -e "CALL Stardust_Jugadores_Online();"

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
y asi cada 15 minutos desde el propio servidor el numero de jugadores conectados sera actualizado y lo mostramos en la pagina web

Última edición por navbuoy fecha: 05-10-2024 a las 15:11:38.
Responder Con Cita