XML parsen zu langsam (SimpleXML)

Loomis

Mitglied Bunt
Hi,

gleich eins vorweg, ich habe noch nicht wirklich viel mit XML und PHP gearbeitet, deswegen muss mein "Problem" nicht gleich ein Problem sein :D

Aber erstmal etwas Code:

PHP:
/**
* Gang Xml
*/
$gangXml = 'http://www.pennergame.de/dev/api/gang.' .$gangId. '.xml';
/**
* Parse Xml File
*/
$stringGangXml = file_get_contents( $gangXml );
$gangXml = new SimpleXMLElement( $stringGangXml );

/**
* Get Gang Vars
*/
require_once( 'gang_vars.inc.php' );

$memberData = array();
for( $i = 0; $i < $gangMemberCount; $i++ )
{
    $memberXml = 'http://www.pennergame.de/dev/api/user.' .$gangXml->gang->member_list->member->$i->id. '.xml';
    $stringMemberXml = file_get_contents( $memberXml );
    $memberXml = new SimpleXMLElement( $stringMemberXml );
  
    if( isset( $memberChange[(string)$gangXml->gang->member_list->member->$i->id] ) )
    {
        $changeLink = '<a href="http://www.pennergame.de/change_please/' .$memberChange[(string)$gangXml->gang->member_list->member->$i->id]. '/" target="_blank" title="Spenden">Spenden</a>';
    }
    else
    {
        $changeLink = 'Spenden';
    }

    array_push( $memberData,
                array(
                    'id' => $memberXml->user->id,
                    'name' => $memberXml->user->name,
                    'points' => $memberXml->user->points,
                    'position' => $memberXml->user->position,
                    'since' => $memberXml->user->reg_since,
                    'change' => $changeLink
                )
    );
}

(In dem Beispiel läuft die Schleife 27mal)

Dann führe ich den Code aus, was aber (nicht immer, nur ab und zu) zu lange dauert:
Code:
Maximum execution time of 60 seconds exceeded

Wenn der Code nicht zu langsam ist, bekomme ich auch zu 100% das gewünschte Ergebnis, es geht mir nur um die Geschwindigkeit.

Ich denke wohl, ich mache mir das selbst zu kompliziert oder? Ich habe nur gerade keine Idee wie ichs besser machen soll :(

//edit: $memberData erzeuge ich übrigens, damit ich das im HTML Template schön ausgeben kann.
 
Zuletzt bearbeitet:
Statt [phpf]file_get_contents[/phpf] kannst du auch direkt [phpf]simpexml_load_file[/phpf] benutzen, erspart dir also schon mal eine Funktion.

Ich vermute, dass ein Großteil der Arbeit die Verbindung zu der Anbieterseite ist und das Laden deren Daten. Hast du mal in der Richtung getestet?
Einfach mal die XML Dateien speichern und lokal testen bzw. dann von lokal auf deine Website.

Ansonsten eben in Etappen abarbeiten... Wobei das dann bei der Automatisierung etwas komplexer wird.
 
simplexml_load_file() bringt auf jeden Fall schonmal mehr Geschwindigkeit.
 
Zuletzt bearbeitet:
Hab das ganze mal online gestellt. Wie man merkt, geht es frühs recht schnell, gegen Nachmittag/Abend dann wieder langsam.
Also liegt es eher nicht an mir, sondern eher an der Anbieterseite.

Ich habe mir schon was anderes überlegt, und zwar werde ich mal versuchen aus den XML Dateien per CronJob statische HTML Seiten zu erstellen. Also eine Lösung mit Cachen.

Somit ist das hier erstmal erledigt, bis ich ein neues Problem habe ;)
 
Zuletzt bearbeitet:
Zurück