Dynamisch generiertes Image Speichern und automatisch aktualisieren

CrAzYs

Grünschnabel
Hi!
Mein kleines Script liest daten von einer Statistik Seite über den gewünschten Nick der per Query übergeben wird aus und gibt diese in einem Bild wieder.

Nun hab ich das problem das das ganze nur mit dem Firefox Browser geöffnet werden kann und acuh nicht in irgendein Forum oder so eingebunden werden kann.

Ich bin mit meinem (Anfänger) Latein am ende...
Wäre Dankbar für jegliche Hilfe oder Lösungsvorschläge!

Danke!

PHP:
<?
$open='http://entermatrix.net/stats.php?nick=';
$qry=$HTTP_SERVER_VARS['QUERY_STRING'];
$open.=$qry;
$file = file_get_contents($open);

$bla = explode("target='_Blank'>",$file);
$blub = explode("</form>",$bla[1]);

$test = explode("\n",$blub[0]);

for($i = 0; $i < count($test); $i++) {
    $bla[$i] = explode("'",$test[$i]);
}
$Nick = $bla[3][5];
$Kills = $bla[5][5];
$Death = $bla[6][5];
$KD = $bla[7][5];
$Xp = $bla[8][5]; 
$KPM = $bla[11][5];
$DPM = $bla[12][5];
$lvl = $bla[4][5];

$rank="Level/level_";
$rank.=$lvl;
$rank.=".png";

//Bild initialisieren
$img = imagecreatefromjpeg("basic_large.jpg");
$rankimg = imagecreatefrompng("$rank");
$white = imagecolorallocate($img, 255, 255, 255);

//Name
imagestring($img, 3, 75, 40 ,$Nick ,$white);

//Kill
imagestring($img, 2, 150, 8 ,"Kills:" ,$white);
imagestring($img, 2, 200, 8 ,$Kills ,$white);

//Death
imagestring($img, 2, 150, 24 ,"Death:" ,$white);
imagestring($img, 2, 200, 24 ,$Death ,$white);

//K/D
imagestring($img, 2, 150, 40 ,"K/D:" ,$white);
imagestring($img, 2, 200, 40 ,$KD ,$white);

//XP
imagestring($img, 2, 235, 8 ,"XP:" ,$white);
imagestring($img, 2, 295, 8 ,$Xp ,$white);

//KPM
imagestring($img, 2, 235, 24 ,"Kill/m:" ,$white);
imagestring($img, 2, 295, 24 ,$KPM ,$white);

//DPM
imagestring($img, 2, 235, 40 ,"Death/m:" ,$white);
imagestring($img, 2, 295, 40 ,$DPM ,$white);

//Rank Image
imagecopy($img, $rankimg, 90, 15, 0, 0, 20, 21); 

header("Content-Type: image/jpg");
imagejpeg($img, "", 100);

?>
 
Leider liefert die externe Ressource keine Information über die Aktualität der Daten. Somit bleibt dir nichts anderes übrig, als die Daten entweder bei jedem Aufruf des Skripten abzuholen oder aber selbst eine Verfallszeit festzulegen, nach der die Grafik aktualisiert werden soll.
 
Das ist es ja wie kann ich es realisieren das es ein Bild aufruft und dieses dann automatisch aktualisiert wird ?
 
Das ist prinzipiell ganz einfach: Prüfe vor dem Aktualisieren der Grafik, ob diese bereits die aktuellsten Daten enthält. Doch da die externe Datenquelle keine brauchbaren Informationen dazu bereithält, setzen wir uns selbst ein Verfallsdatum, etwa eine Minute. Umgesetzt könnte das ganze etwa wie folgt aufgebaut sein:
PHP:
<?php

	header('Content-Type: text/plain', true);

	$url = 'http://entermatrix.net/stats.php?nick=';
	$dir = '/images/foo/bar/';
	$expiry = 60;


	if( isset($_SERVER['QUERY_STRING']) || trim($_SERVER['QUERY_STRING'])=='' ) {
		header($_SERVER['SERVER_PROTOCOL'].' 300 Bad Request', true);
		exit;
	}

	$filename = $dir.md5($_SERVER['QUERY_STRING']);
	if( !file_exists($filename) || filemtime($filename) <= time()+$expiry ) {
		$file = file_get_contents($url);
		…
		imagejpeg($img, $filename, 100);
	}

	header('Content-Type: image/jpeg', true);
	readfile($filename);
	exit;

?>
 
Das Skript prüft zu Anfang, ob bereits eine Grafik mit entsprechendem Namen existiert und ob sie noch „haltbar“ ist. Ist dies nicht der Fall, wird sie (neu) generiert und gespeichert. Danach wird die nun existente Grafikdatei einfach ausgegeben. Den Teil der Generierung der Grafik habe ich dabei abgekürzt.
 
Zurück