Ralph_: Newsfeed programmieren

Hallo,

vorab möchte ich erwähnen, dass ich noch recht frisch dabei bin. Ich hoffe also, dass meine Frage nicht allzu dämlich ist :-).

Ich habe ein Newssystem mit php und MySQL geschrieben. Sicherlich nichts Großes, aber für meine Zwecke eine Revolution. Ich würde jetzt gerne das Ganze als RSS-Feed anbieten, mir fehlt aber jede Ursprungsidee. Gibt es für soetwas "Masken", muss ich einfach statt der normalen Ausgabe in php (mal so als Beispiel: echo $row[newstext];) das komplette Gerümpel mit echo ausgeben oder wie gehe ich da vor?

Vielen Dank für Eure Hilfe und einen schönen Abend,

Ralph_

  1. Moin!

    oder wie gehe ich da vor?

    Zu erst einmal solltest Du Dir darüber im Klaren sein; dass Feeds sehr oft abgerufen werden. Grund dafür sind Dienste, welche die Feed aufbereiten oder Software (wie.z.B. Kontakt) welche diese anzeigen und regelmäßig - auch im Hintergrund - aktualisieren. Ein hinreichend beliebter Feed kann deshalb die gleiche Wirkung erzielen wie eine DDoS-Attacke.

    Das bedeutet, Du solltest bei einem Feed sehr darauf achten, dass dieser keine zu große Serverlast erzeugt.

    Insbesondere würde ich ihn nicht bei jedem Abruf live erzeugen sondern als statische Datei bei jeder Änderung des Datenbestandes statisch erzeugen lassen. Das kann z.B. durch einen Funktionsaufruf in jedem, den Datenbestand ändernden Skript geschehen. Ach so: Achte darauf den richtigen Content-Type zu senden. Das kann via htaccess geschehen.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

    1. Danke!

      Ich habe mittlerweile das hier

      http://www.drweb.de/magazin/rss-xml-datei-selbst-gebaut/

      entdeckt.

      Wenn ich das hier

        
      <?xml version="1.0"  
      encoding="ISO-8859-1" ?>  
      <rss version="0.91">  
      <channel>  
      
      

      usw. mit Php ausgebe und die Bereiche wie

        
      <title>Beispiel Website </title>  
      
      

      z.B. so fülle

        
      <title><? echo $row[uberschrift] ?></title>  
      
      

      gelange ich ja offenbar zum Ziel. Ist das dann sehr serverbelastend? Ich kenne mich wirklich nicht damit aus.

      Vielen Dank!

      1. Grüße,
        erstell die rss datei nicht ondemand sondern schreib die als datei nach jedem update - dann belastet es den Server auch nicht mehr als "sonstige datei"
        MFG
        bleicher

        --
        __________________________-

        FirefoxMyth
      2. Moin!

        gelange ich ja offenbar zum Ziel. Ist das dann sehr serverbelastend?

        1. Versuch:

        a) Nimm ein Streichholz aus einer Schachtel und wirf es auf den Boden, lege die leere Schachtel auf den Tisch.
        b) Hebe das Streichholz auf und lege es in die Schachtel auf den Tisch.
        c) Beantworte folgende Frage: War es anstrengend?

        2. Versuch:

        a) Nimm eine volle Schachtel Streichhölzer (48 Stck.) und wirf die Streichhölzer auf den Boden, lege die leere Schachtel auf den Tisch.
        b) Hebe jedes Streichholz einzeln und lege es in die Schachtel auf den Tisch.
        c) Beantworte folgende Frage: War es anstrengend?

        3. Versuch

        a) Nimm eine Schachtel Streichhölzer und lege die Schachtel auf den Boden.
        b) Hebe die Schachtel auf und lege sie auf den Tisch.
        c) Beantworte folgende Frage: War es anstrengend?

        Erkenntnis: Auch leichte Tätigkeiten (1. Versuch) können durch Wiederholung belastend sein (2. Versuch), wenn man sie nicht effektiv (3. Versuch) ausführt.

        Analogien:

        1. Versuch: Einmaliges Abarbeiten des Skriptes, welches Deinen RSS-Feed erzeugt.
        2. Versuch: Vielfaches Abarbeiten des Skriptes, welches Deinen RSS-Feed erzeugt - das wird eintreten, wenn Du den Feed bei jedem Abruf erzeugst. Die Streichhölzer sind hier die Artikel, die verarbeitet werden müssen.
        3. Versuch: Dein Feed ist statisch (wird nur bei Änderungen der Inhalte neu erzeugt) und muss nur noch ausgeliefert werden.

        Noch ein paar Tipps:

          
        function SendFeed($rssFilename) {  
                # Prüfungen  
        	if (!file_exists($rssFilename)) {  
        		die("SendFeed() - Fataler Fehler: Der Feed existiert nicht.");  
        	}  
        	if (!is_readable($rssFilename)) {  
        		die("SendFeed() - Fataler Fehler: Der Feed existiert, ist aber nicht lesbar.");  
        	}  
          
                # Zeit und Zeitzone:  
        	$time=date('r');  
                # Dateityp und Kodierung senden:  
        	header ('Content-type: application/rss+xml; charset:ISO-8859-1');  
                # Diverse Zeitstempel:  
        	header ('Expires: '.$time);  
        	header ('Date: '.$time);  
        	header ('Last-Modified: '.date('r', filemtime($rssFilename)));  
                #Inhalt senden:  
        	print file_get_contents($rssFilename);  
        }
        

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix