Blackskyliner
NPC
- 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
In diesem Beispiel Datei. (Wie man diese Datei dann ausliest so wie ich sie hier im script exportiere weiss ich nicht
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 ^.^)
Soo hier der Code für einzelne Items
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
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
Aber hier erstmal fürn einzelnes Item:
EDIT: Methode 3 war zu Zeitaufwändig in der ausführung und brachte deshalb wenig sinn
also hab ichs deleted
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
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
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
Zuletzt bearbeitet von einem Moderator: