PHP-Itemlist Beispiel

Mitglied seit
19.02.2006
Beiträge
6
Reaktionspunkte
0
Kommentare
3
Buffs erhalten
2
Hier mal ein Beispiel wie man sich die gsammte Itemliste in ein PHP-Array laden kann:

Das auslesen der xml dauert beim jetzigen stand rund 75Sekunden (Könnte halbiert sein aber ich weiss nicht wie ich ein SimpleXMLElement Objekt in der Anzahl Counte...). Am besten man schreibt isch das alles in eine Datei oder in eine Datenbank
smile.gif
In diesem Beispiel Datei. (Wie man diese Datei dann ausliest so wie ich sie hier im script exportiere weiss ich nicht
smile.gif
iss nur zum testn in ne Datei geschrieben worden, weil das für ne Ausgabe dann am ende zuviele zeichen für den Browser waren ^.^)

Code:
$starttime = time();
$xml = simplexml_load_file("http://www.blasc.de/itemlist.xml");
$i=0;
foreach ($xml->blascitem as $blasc) {
   $i++;
}
$gesammt = $i;
$i=0;
for($i;$i<$gesammt;$i++)
{
	foreach($xml->blascitem[$i]->attributes() as $a => $b) {
  $item[$i]['attribute'][$a] = $b;
	}
}


ob_start();
print_r( $item );
$handle = fopen("items.array", "w+");
fwrite($handle, ob_get_contents());
fclose($handle);
ob_end_clean();
$endtime = time();

$differenz = $endtime-$starttime;

echo "Verarbeitung beendet. Der Vorgang dauerte: ".$differenz." Sekunden";

Soo hier der Code für einzelne Items
smile.gif
Das kosst dann in der gesammt verarbeitung bestimmt viel zeit ^^ Weil wenn man sich alles in ne DB saugen wällte müsste man das obrige script mit dem unterem kombiniren und dadurch versoppelt sich die ausführungs zeit nochmal
smile.gif
und dann noch die zeit um sich die einzelnen XML´s zu ziehn... Ich tipp mal auf 200Sekunden für einen kompletten export... Ich testes dann mal und stell auch diesen code rein
wink.gif
Aber hier erstmal fürn einzelnes Item:

Code:
<?php
/**
 * simplexml2ISOarray() - Orginal by http://www.php.net/manual/de/ref.simplexml.php Comment: 17-Oct-2005 02:00
 *
 * @param object $xml
 * @return
 **/
function simplexml2ISOarray($xml) {
   if (get_class($xml) == 'SimpleXMLElement') {
         $attributes = $xml->attributes();
       foreach($attributes as $k=>$v) {
           if ($v) $a[$k] = (string) $v;
       }
         $x = $xml;
         $xml = get_object_vars($xml);
   }
   if (is_array($xml)) {
       if (count($xml) == 0) return (string) $x;
         foreach($xml as $key=>$value) {
             $r[$key] = simplexml2ISOarray($value);
             if ( !is_array( $r[$key] ) ) $r[$key] = utf8_decode( $r[$key] );
       }
       if (isset($a)) $r['@'] = $a;
         return $r;
   }
   return (string) $xml;
 }

$starttime = time();
$xml = simplexml_load_file("http://www.blasc.de/xml/i17182.xml");

ob_start();
print_r(simplexml2ISOarray($xml));
$handle = fopen("item17182.array", "w+");
fwrite($handle, ob_get_contents());
fclose($handle);
ob_end_clean();
$endtime = time();

$differenz = $endtime-$starttime;

echo "Verarbeitung beendet. Der Vorgang dauerte: ".$differenz." Sekunden";
?>

EDIT: Methode 3 war zu Zeitaufwändig in der ausführung und brachte deshalb wenig sinn
smile.gif
also hab ichs deleted
tongue.gif
 
Zuletzt bearbeitet von einem Moderator:
Edit: jaja hier stand auch nur die Methode 3
tongue.gif
 
Zuletzt bearbeitet von einem Moderator:
1 Kompletter Scan: Dauert 6586 Sekunden das sind: 109,77 Minuten
Das sind dann im Kompletten: 1Stunde 49Minuten und 77Sekunden
smile.gif
(Hab mich hftl. nicht verrechnet
tongue.gif
) Die Datei ist am ende nach dem jetzigen füllstand 33.107kB gross also rund 33MegaByte
smile.gif


@Blasc wenn euer Server zwischen 17:40 bis jetzt einen mega ausschlag hatte, dann ist meine Methode sehr ungeeignet und sollte gelöscht werden
smile.gif
Ansonsten... wer eine Stunde warten kann kann sichh bis auf einige kleinere ausnahmen alle Items vom server exportieren
smile.gif


EDIT: Das passirt nur bei Methode 3
smile.gif
die nur ich habe
yahoo.gif
glei ma löschen... funktioniert eh nit der mist ^^
 
Zuletzt bearbeitet von einem Moderator:
Die Frage ist nur, was es bringen soll, alle Items auszulesen. Ich hab zwar keine genaue Zahlen, aber ich würde schätzen, dass die meisten ItemStats-Systeme maximal 5% aller Items nutzen. Insofern ist es wesentlich einfacher die Items "on demand" auszulesen.
 
Zuletzt bearbeitet von einem Moderator:
Jo, dann schmiert euer server einfach mal so weg, und nix kann angezeigt werden
smile.gif
Aber hast eh recht
wink.gif
ich lese nurnoch die allitems.xml aus und trage das in meine datenbank ein und dann ruf ich die XML immer einzeln auf
smile.gif
weil fürn update der ganzen DB 1stunde zu warten wo dann nochnichtmal alles korrekt in die DB importiert wird, weil PHP da mit der zeit nur scheiße macht ^^ werd ichs so amchen
smile.gif
Das 1. und 2. Beispiel sind abern schönes beispiel wie man die dateien nutzt
wink.gif
Das 3. lösch ich jetzt da mal raus
smile.gif
Und wenn eurer server nicht errechbar ist schreib ich was böses in den Tooltip
tongue.gif
yahoo.gif
nene
wink.gif
 
Zuletzt bearbeitet von einem Moderator:
Zurück