Autor Zpráva
Jakubnovak
Profil *
Zdravím,
mám PHP funkce na status serveru a potřebuji, aby se každou vteřinu aktualizovali, je to možné?
Zde jsou:
function server_odezva($address, $port = 25566, $timeout = 30){
$beginning_time = microtime(true);

		$socket = @fsockopen($address, $port, $errno, $errstr, $timeout);

		if (!$socket) {
			// Could not establish a connection to the server.
			return false;
		}

		$end_time = microtime(true);

		fwrite($socket, "QUERY_JSON\n");

		$response = "";

		while(!feof($socket)) {
			$response .= fgets($socket, 1024);
		}

		$query = ($end_time - $beginning_time) * 1000;

		return round($query, 2);
} 

function server_hracu($address, $port = 25566, $timeout = 30){
		$query = array();

		$beginning_time = microtime(true);

		$socket = @fsockopen($address, $port, $errno, $errstr, $timeout);

		if (!$socket) {
			// Could not establish a connection to the server.
			return false;
		}

		$end_time = microtime(true);

		fwrite($socket, "QUERY\n");

		$response = "";
		
		while(!feof($socket)) {
			$response .= fgets($socket, 1024);
		}

		$response = explode("\n", $response);

		// Player count
		$query['playerCount'] = explode(" ", $response[1], 2);
		$hracu = $query['playerCount'][1];

		// Max players
		$query['maxPlayers'] = explode(" ", $response[2], 2);
		$maxhracu = $query['maxPlayers'][1];

		return $hracu."/".$maxhracu;
} 

function server_seznamhracu($address, $port = 25566, $timeout = 30){
		$query = array();

		$beginning_time = microtime(true);

		$socket = @fsockopen($address, $port, $errno, $errstr, $timeout);

		if (!$socket) {
			// Could not establish a connection to the server.
			return false;
		}

		$end_time = microtime(true);

		fwrite($socket, "QUERY\n");

		$response = "";
		
		while(!feof($socket)) {
			$response .= fgets($socket, 1024);
		}

		$response = explode("\n", $response);

		$query['playerList'] = explode(" ", $response[3], 2);
		$seznamhracu = explode(", ", trim($query['playerList'][1], "[]"));

		return $seznamhracu;
}
Chamurappi
Profil
Reaguji na Jakubnovaka:
je to možné?
Ano, to je možné.

Bude se ti hodit setInterval a buď můžeš jednoduše měnit src obrázku (pokud by tvůj skript vracel obrázek), nebo složitěji stahovat AJAXem kus HTML kódu a ten do něčeho vepisovat. Nebo můžeš použít <iframe> a ten pravidelně aktualizovat, pokud má ten kus HTML pevné rozměry.
Jakubnovak
Profil *
Bohužel to budu muset dělat pomocí toho ajaxu, poradili byste prosím někdo nějaké funkce?
Chamurappi
Profil
Reaguji na Jakubnovaka:
Na AJAX stačí poměrně krátká universální funkce:
function nacti(url, callback)
{
  var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
  xhr.open("GET", url, true);
  xhr.onreadystatechange = function()
  {
    if(xhr.readyState == 4) callback(xhr.responseText);
  };
  xhr.send("");
}
Použití:
nacti("adresa.php", function(vystup)
{
  document.getElementById("ídéčko").innerHTML = vystup;
});
Jakubnovak
Profil *
Díky, už to mám :)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0