Server Status Script
Revision as of 02:40, 18 May 2009 by imported>Steiner (Server Status Script)
I'm just posting it here in hope that folks from the CoH/V community can see it and use it to its fullest extent. Feel free to add upon this and post your fixes/ideas or other script languages that have the same function.
PHP Server Status Class
For PHP 5
<?php /* Timestamp: 5/4/2009 11:48 AM Author: Anthony W. Steiner (of the Titan Network) Site: http://cohtitan.com email: steiner@cohtitan.com License: None, I just threw this together for the COH/V community to no ends of my own. Do what you want to this script, no credit needs to stay intact. Summary: Well, the good folks at "Paragon Studios" finally made the server status a utilitarian XML sheet. This is just something to make it easier on the PHP coders out there that are still seeking some help on the matter. USAGE ------------------------------------------------------------------------------- Dependencies: - PHP Compatible Server - PHP 5 Mandatory - SimpleXMLElement (only works with PHP 5+) Example(s): NOTE: (When editing, do no use the <> characters, used as denotation for user-defined variables that you will need to change in you own code.) This script is quite easy to use, simply include the php file and call the class to the page in question. ######################## [ Code Example 1 ] ######################## include ("<path to this file>"); $<variable> = New ServerStatus(); ######################## [ Code Example 1 ] ####################### Keep in mind, you can put the class right inside the page you wish to use this one and not have to include it. Now that it's called we can go forward with just throwing it in with some code. The $<variable> is an OBJECT, there for '->' is where the magic happens. ######################## [ Code Example 2 ] ######################## foreach( $<variable>->servers as $serverName => $serverStatus) { echo $serverName . " - " . $serverStatus . "<br />"; } ######################## [ /Code Example 2 ] ####################### You can use this method in a million different ways... your imagination is the limit. The other two possible values do not need any form of additional coding to write out. ######################## [ Full Page Example ] ######################## include ("<path to this file>"); $<variable> = New ServerStatus(); foreach( $<variable>->servers as $serverName => $serverStatus) { echo $serverName . " - " . $serverStatus . "<br />"; } echo $<variable>->lastUpdate; echo $<variable>->timeZone; ######################## [ /Full Page Example] ####################### Values: $variable->servers - Object - Can be put in a loop (See "Code Example 2") - Uses Key => Value syntax for looping $variable->lastUpdate - String - Uses strtotime() function to assume host server's local timezone - Does Not require any additional code to call */ class ServerStatus { public function __construct() { return $this->get(); } public function get() { $remoteFeed = file_get_contents("http://www.cityofheroes.com/servers/server_stat.xml"); $xml = new SimpleXMLElement($remoteFeed); $lastUpdate = (string)$xml['timestamp']; $timeZone = (string)$xml['timezone']; // Using the strtotime() function will allow you to convert the UTC time into your site's local time, // which can be set in the php.ini if your host/server allows this change. $this->lastUpdate = date('h:ia M j, Y', strtotime($lastUpdate.$timeZone)); foreach($xml->server as $server) { $serverObject->$server['name'] = (string)$server['status'] ; } $this->servers = $serverObject; return $this; } } $ServerStatus = New ServerStatus; ?> A few different examples <br /><br /> Basic Table <table> <tr> <th>Server</th> <th>Status</th> </tr> <?php foreach($ServerStatus->servers as $serverName => $serverStatus): ?> <tr> <td><?= $serverName ?></td> <td><?= $serverStatus ?></td> </tr> <?php endforeach; ?> </table> Last Update: <?= $ServerStatus->lastUpdate ?>
Yea I only have one example... but if you get crafty with the code you can trade out text for images, or even make it so only the server(s) you want will show up.
Hit me up at steiner@cohtitan.com or PM me on the Titan Forums if you have any questions or requests!