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
Ankündigung
Einklappen
Keine Ankündigung bisher.
RSS-Feed nur teilweise auslesen
Einklappen
Neue Werbung 2019
Einklappen
X
-
RSS-Feed nur teilweise auslesen
Stichworte: -
-
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
?>
-
Ein Gast antworteteZitat von Hasch79 Beitrag anzeigenAuf der Seite befinden sich ja die Feeds mehrerer Webseiten als Zusammenfassung.
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
Ein Gast antwortete16k, 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:
Einen Kommentar schreiben: