Nachdem ich meine CoD Statistik so gut wie fertig habe, fehlt noch eine einzige Funktion, nämlich die Anzeige das der Gameserver gerade offline ist. Aktuell sieht meine PHP Datei so aus:
Code: Alles auswählen
[...]
$server_ip = "udp://" . $server_ip;
$serverip = substr($server_ip, 6);
$connect = fsockopen($server_ip, $server_port, $errno, $errstr, 30);
if ($connect)
$template->assign_block_vars('server_online', array());
{
socket_set_timeout ($connect, 1, 000000);
$send = "ÿÿÿÿ" . chr (0x02) . "getstatus";
$debug1 = fputs($connect, $send);
$debug2 = fwrite ($connect, $send);
$output = fread ($connect, 1);
if (! empty ($output))
{
do
{
$status_pre = socket_get_status ($connect);
$output = $output . fread ($connect, 1);
$status_post = socket_get_status ($connect);
}
while ($status_pre['unread_bytes'] != $status_post['unread_bytes']);
};
fclose($connect);
$output = explode ("\\", $output);
$max_index = array_search ("sv_maxclients", $output);$max_clients = $output[$max_index+1];
$max_index = array_search ("sv_privateClients", $output);$privat = $output[$max_index+1];
[...]
}
@usort($playerlist, "cmp");
$players = count($playerlist) - 1;
}
for ($i = 0; $i != (count($playerlist) -1); $i++)
{
$template->assign_block_vars('spieler', array(
'PLAYER' => farben(str_replace("\"", "", $playerlist[$i]['player'])),
'PLAYER_SCORE' => $playerlist[$i]['score'],
'PLAYER_PING' => $playerlist[$i]['ping']));
}
$template->assign_vars(array(
'SERVER_IP' => $serverip,
'SERVER_PORT' => $server_port,
[...]
'ALAG' => ($alag == 1 ? "<img src='./templates/fiblack/images/cod/al_an.jpg' alt='mit Antilag' title='mit Antilag' border='0' />" : "<img src='./templates/fiblack/images/cod/al_aus.jpg' alt='ohne Antilag' title='ohne Antilag' border='0' />"),
'VOICE' => ($voice == 1 ? "<img src='./templates/fiblack/images/cod/gv_an.jpg' alt='mit GameVoice' title='mit Gamevoice' border='0' />" : "<img src='./templates/fiblack/images/cod/gv_aus.jpg' alt='ohne GameVoice' title='ohne Gamevoice' border='0' />"),
'PUNKBUSTER' => ($punkbuster == 1 ? "<img src='./templates/fiblack/images/cod/pb_an.jpg' alt='mit PunkBuster' title='mit Punkbuster' border='0' />" : "<img src='./templates/fiblack/images/cod/pb_aus.jpg' alt='ohne Punkbuster' title='ohne Punkbuster' border='0' />")
)
);
$template->pparse('body');Code: Alles auswählen
// Server offline:
if (!$max_clients) {
?>
<table align="center" >
<tr>
<td><font size="2"><font color="#DADADA"><center><br><br> IP : <?=$serverip?> : <?=$server_port?> <br></font></font><br>
<img src="<?=$img_offline?>" border="0"><br><br><font color="#DADADA">Der Server ist OffLine <br>Es werden keine Daten vom Server empfangen.<br>Bitte überprüfen Sie die richtige Eingabe der IP-Adresse und des Serverports<br>Der Server wird in 60 Sek. neu abgefragt.</font></center></td>
</tr>
</table>
<?
exit;
}
//Ausgabe:
?>Code: Alles auswählen
}
@usort($playerlist, "cmp");
$players = count($playerlist) - 1;
}
for ($i = 0; $i != (count($playerlist) -1); $i++)
{
$template->assign_block_vars('spieler', array(
'PLAYER' => farben(str_replace("\"", "", $playerlist[$i]['player'])),
'PLAYER_SCORE' => $playerlist[$i]['score'],
'PLAYER_PING' => $playerlist[$i]['ping']));
}Code: Alles auswählen
// Server nicht erreichbar :
if (!$max_clients)
{
$template->assign_block_vars('server_offline', array());
{
$template->assign_block_vars('offline', array(
'SERVER_IP' => $serverip,
'SERVER_PORT' => $server_port,
'L_OFFLINE' => $lang["offline"],
'IMG_OFFLINE' => $img_offline
));
}
}[/code]$template->pparse('body');[/code]
Das funktioniert jedoch nicht. Es gibt diese PHP Fehlermeldungen:
Das ist dies hier Zeile 4 und ganz oben die Zeile 39:[15-Feb-2008 07:42:46] PHP Fatal error: Allowed memory size of 314572800 bytes exhausted (tried to allocate 312 bytes) in ...\call_of_duty_stat.php on line 191
Code: Alles auswählen
for ($i = 0; $i != (count($playerlist) -1); $i++)
{
$template->assign_block_vars('spieler', array(
'PLAYER' => farben(str_replace("\"", "", $playerlist[$i]['player'])),
'PLAYER_SCORE' => $playerlist[$i]['score'],
'PLAYER_PING' => $playerlist[$i]['ping']));
}Anbei mal das vollständige Script.