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

  • 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


  • #2
    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.

    Kommentar


    • #3
      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?
      Standards - Best Practices - AwesomePHP - Guideline für WebApps

      Kommentar


      • #4
        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.

        Kommentar


        • #5
          Du musst die Datei ja nicht zwei mal abrufen, also zwei mal simplexml_load_file ist ja überfüssig, oder welche Stelle meinst du?
          You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

          Kommentar


          • #6
            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.

            Kommentar


            • #7
              Gegen das erste Laden bist du machtlos... anschliessend hilft lokales Caching, aber auch nur bis der verfällt (was du aber selber festlegen kannst).
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                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.

                Kommentar


                • #9
                  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

                  ?>

                  Kommentar

                  Lädt...
                  X