Ankündigung

Einklappen
Keine Ankündigung bisher.

RSS-Feed nur teilweise auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Hasch79
    hat ein Thema erstellt RSS-Feed nur teilweise auslesen.

    RSS-Feed nur teilweise auslesen

    Hallo,
    für eine Übersichtsseite mit mehreren Feeds ( http://www.use-erlingsen.de ) möchte ich die Feeds nach Datum der letzten Aktualisierung sortieren.
    Mein bisheriger Ansatz, erst alle Feeds mittels simplexml_load_file() einzulesen und dass Datum der letzten Aktualisierung zur Sortierung zu speichern, verursacht lange Laufzeiten.
    Gibt es eine Möglichkeit, statt des ganzen Feeds nur das letzte Element zu laden?

    Grüße und Danke,

    Harald Schröder

  • Hasch79
    antwortet
    Also hier meine Logik mit Code:

    PHP-Code:
    <?php
    $feeddatum
    =array();

    // Feeds einlesen
    $xml simplexml_load_file('http://www.sv-rot-weiss-erlinghausen.de/rwenews.xml'); 
    $tempdate$xml->channel[0]->item[0]->pubDate;
    $feeddatum['rwe']=date('Y.m.d H:i'strtotime((string) $tempdate));


    $xml simplexml_load_file('http://www.use-erlingsen.de/?cat=9&feed=rss2');
    $tempdate$xml->channel[0]->item[0]->pubDate;
    $feeddatum['ortsvorsteher']=date('Y.m.d H:i'strtotime((string) $tempdate));

    //Die weiteren Feeds habe ich hier weggelassen

    arsort($feeddatum);

    echo
    '<table style="width: 100%;">';
    echo
    '<tbody>';

    foreach (
    $feeddatum as $key => $value) {

    Switch (
    $key){
    case 
    "rwe":
    rwerow();
    break;
    case 
    "useerlingsen":
    useerlingsenrow();
    break;

    //Die weiteren case habe ich hier weggelassen
    }

    }

    echo 
    '</tbody>';
    echo 
    '</table>';

    function 
    useerlingsenrow()
    {
    echo 
    '<tr>';
    echo 
    '<td style="max-width: 106px; text-align: center;">';
    echo 
    '<img title="erlinghausen" src="http://www.use-erlingsen.de/cms/wp-content/uploads/2014/08/Logo-Use-Erlingsen-NEU-klein-2.png" alt="" width="100"  />';
    echo 
    '</td>';
    echo 
    '<td>';
    echo 
    '<h4 style="margin-left: 20px;">Use Erlingsen</h4>';
    RSSImport($display=1$feedurl='http://www.use-erlingsen.de/?cat=7&feed=rss2',$before_desc '<br ?-->',$displaydescriptions true,$after_desc '',$html=true);
    echo 
    '</td>';
    echo 
    '</tr>';
    }

    //Die weiteren functions ..row() habe ich hier weggelassen

    ?>

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von Hasch79 Beitrag anzeigen
    Auf der Seite befinden sich ja die Feeds mehrerer Webseiten als Zusammenfassung.
    ich weiss nicht wasdu machst, wieso da bei dir irgendwas lange dauert.
    der erste feed wird maximal alle zehn tage aktualisiert, der zweite feed, die kommenare, das kümmert wohl keinen - ist leer.

    hohl dir die daten mit curl, messe die zeit und lad es in simplexml, wenn du unbedingt willst.
    falls es keine neuen feeds gibt, solltest du das merken können.

    poste code wenn du willst, aber nur in optisch ansprechender form.

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    Gegen das erste Laden bist du machtlos... anschliessend hilft lokales Caching, aber auch nur bis der verfällt (was du aber selber festlegen kannst).

    Einen Kommentar schreiben:


  • Hasch79
    antwortet
    Auf der Seite befinden sich ja die Feeds mehrerer Webseiten als Zusammenfassung.
    Zum sortieren lade ich erst alle Feeds und merke mir das Datum (je Feed einmal simplexml_load() und Datum speichern). Anschließend nach Datum sortiert wird dann das Plugin genutzt, um den jeweiligen Feed anzuzeigen. (Also zweites Laden des Feeds)

    Das erste Laden, also mit simplexml_load, ist der Teil, der zu lange dauert.

    Einen Kommentar schreiben:


  • chorn
    antwortet
    Du musst die Datei ja nicht zwei mal abrufen, also zwei mal simplexml_load_file ist ja überfüssig, oder welche Stelle meinst du?

    Einen Kommentar schreiben:


  • Hasch79
    antwortet
    Hallo,

    bei der oben genannten Seite wird aktuell noch nicht nach Datum sortiert. Die Ladezeit ist daher ok.
    Bei meiner dynamischen Version ist die Ladezeit deutlich höher.
    Ich hatte erwartet, dass die Ladezeit doppelt so hoch wäre, da jeder Feed ja nun zweimal geladen wird. Einmal zum herausfinden des Datums der letzten Aktualisierung und dann nochmal zur Anzeige, wie momentan auch.

    Da die Laufzeit erheblich länger ist vermute ich, dass das WP-Plugin WP-RSSImport nur den zur Anzeige benötigten Teil eines Feeds, also das neueste Element, lädt.
    Dies würde ich gerne in PHP genauso machen.

    Einen Kommentar schreiben:


  • rkr
    antwortet
    Das Laden der XML Feed sollte (abhängig von deren Größe) recht schnell gehen. Dann solltest du das betreffende Element mit XPath holen können.
    Was genau kostet denn viel Zeit?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    16k, 0.6 sekunden bei mir nennst du lange ladezeiten?
    gut, dann lese dich doch mal in http://www.the-art-of-web.com/php/feed-reader/ ein.

    Einen Kommentar schreiben:

Lädt...
X