navbuoy |
05-10-2024 14:57:24 |
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'> <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
|