Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 280
Poder: 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
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Stardust IA Daemon - Codigo fuente navbuoy C++ Builder 1 02-10-2024 16:46:10
consulta para actualizar caja jose.ignacio.ve Varios 3 02-12-2013 05:40:25
¿Conocimientos deseables: Pruebas de caja negra o caja blanca ? JXJ Varios 4 19-02-2011 23:45:01
Caja de texto para táctiles kirkhelek Varios 1 17-08-2010 16:35:12
El Legado Intelectual de los Jugadores de Fútbol en Chile Nose Humor 0 22-12-2004 15:21:54


La franja horaria es GMT +2. Ahora son las 09:29:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi