Skip to content

Instantly share code, notes, and snippets.

@lukespragg
Created November 18, 2011 14:35
Show Gist options
  • Save lukespragg/1376610 to your computer and use it in GitHub Desktop.
Save lukespragg/1376610 to your computer and use it in GitHub Desktop.
Minecraft Server Status Scripts
<?php
$host = "XXXXXXXXXX";
$port = 25565;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$connected = socket_connect($socket, $host, $port);
if ($connected) {
$ping_start = microtime(true);
socket_send($socket, "\xFE", 1, 0);
$data = "";
$result = socket_recv($socket, &$data, 50, 0);$ping_end = microtime(true);
socket_close($socket);
if ($result != false && substr($data, 0, 1) == "\xFF") {
$info = explode("\xA7", mb_convert_encoding(substr($data,1), "iso-8859-1", "utf-16be"));
$serverName = substr($info[0], 1);
$playersOnline = $info[1];
$playersMax = $info[2];
$ping = round(($ping_end - $ping_start) * 1000);
echo "Server: $serverName<br/>
Address: $host<br/>
Port: $port<br/>
Players Online: $playersOnline/$playersMax <br/>
Ping: $ping ms<br/>";
} else {
echo "Failed to receive data";
}
} else {
echo "Failed to connect";
}
?>
<?php
$host = "example.com";
$port = 25565;
$socket = @fsockopen($host, $port);
if ($socket !== false) {
@fwrite($socket, "\xFE");
$data = "";
$data = @fread($socket, 1024);
@fclose($socket);
if ($data !== false && substr($data, 0, 1) == "\xFF") {
$info = explode("\xA7", mb_convert_encoding(substr($data,1), "iso-8859-1", "utf-16be"));
$serverName = substr($info[0], 1);
$playersOnline = $info[1];
$playersMax = $info[2];
echo "Server: $serverName<br/>Players Online: $playersOnline/$playersMax";
} else {
// Server did not send back proper data, or reading from socket failed.
echo "Failed to receive data";
}
} else {
// Can't connect. Server is probably down.
echo "Failed to connect";
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment