RSS - PHP Datei als XML speichern

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

  • RSS - PHP Datei als XML speichern

    hallo,

    ich habe mit PHP einen RSS-Feed geschrieben. Das funktioniert auch alles wunderbar. Wenn ich die rss.php Datei in einen RSS-Reader einfüge, werde die News koregt angezeigt.

    Nun zu meiner Frage:

    Ich möchte, wenn ich die rss.php aufrüfe, zB per Cronjob, das Skript eine rss.xml erzeugt, eben mit den letzen 10 News. Diese dann erzeugte rss.xml, will ich den Usern dann als Feed-Datei anbieten.

    Es sollen eben immer nur die 10 neusten angezeigt werden.

    Wenn ich die PHP Datei direkt als Feed zur Verfügung stelle, würde ja jedesmall einen Datenbank abfrage getätigt, wenn ein User seinen RSS Reader aktualisiert, dass möchte ich mit dieser Methode verhindern.

    Hier mein Code:

    PHP-Code:
    <?
     header("Content-Type: application/rss+xml"); 
     echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>";
    ?>

    <rss version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="rss-2_0.xsd">
     <channel>
     <title>News</title>
     <link>[url]http://www.xxx.de[/url]</link>
     <description>Neews</description>
     <language>de-de</language>
     <copyright>Titel</copyright>
     <pubDate>
     <?
       echo date("d.m.Y H:i:s");
     ?>
     </pubDate>
     <lastBuildDate>
     <?
       echo date("d.m.Y H:i:s");
     ?>
     </lastBuildDate>
     <docs>[url]http://www.xxx.de[/url]</docs>
     <generator></generator>
     <managingEditor>kontakt@xxx.de</managingEditor>
     <webMaster>kontakt@xxx.de</webMaster>
     <image>
      <url>[url]http://xxx.de/logo.gif[/url]</url>
      <title>Titel</title>
      <link>[url]http://www.xxx.de[/url]</link>
     </image> 


    <?
      include('db_conn.inc.php');
      
      $conn = DB_Connect();
      
      $sql = "SELECT v.titel,
                     v.datum,
                     v.untertitel    
                     
              FROM news AS v
              
              WHERE v.is_online = 1
              
              ORDER BY v.datum DESC 
              LIMIT 0,10 ";
              
      $result = setSQL($sql, $conn);
      while($row = get_row($result))
      {
          $arr_vids[] = array('titel' => $row['titel'],
                              'datum' => $row['datum'],
                              'untertitel' => $row['untertitel']);
      }
      
      foreach($arr_vids AS $v)
      {
        $link_video = 'http://www.xxx.de;
        
        echo '
        <item>
         <title>' . $v['titel'] . ' - ' . $v['untertitel'] . '</title>
         <link>' . $link_video . '</link>
         <pubDate>' . $v['datum'] . '</pubDate>
        </item>'; 
      }
      
    ?>

     </channel>
    </rss>

  • #2
    Wo ist die Frage ?


    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

    Kommentar


    • #3
      Original geschrieben von MaxP0W3R
      Wo ist die Frage ?
      Ich möchte, wenn ich die rss.php aufrüfe, zB per Cronjob, das Skript eine rss.xml erzeugt , eben mit den letzen 10 News. Diese dann erzeugte rss.xml, will ich den Usern dann als Feed-Datei anbieten.

      Kommentar


      • #4
        Ja wo genau hängt es denn nun ?

        rss.php öffnet datei rss.xml, schreibt die letzten 10 News rein und gut


        rss.php in crontab eintragen


        An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

        Kommentar


        • #5
          ok habe es jetzt so gemacht

          PHP-Code:
          // save output
            
          $data ob_get_contents();
            
          $fp fopen ("news.xml""w");
            
          fwrite($fp$data);
            
          fclose($fp);
            
          ob_end_clean(); 
          läuft, danke!

          Kommentar


          • #6
            Und wozu hast du jetzt diesen Thread gebraucht, wenn du es eh konntest ?







            An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

            Kommentar


            • #7
              Ja Hallo erstmal ...


              könntest Du mir vielleicht noch veraten, an welcher Stelle des rss.php Du den Code eingetragen hast? Ich bekomme immer nur eine leere new.xml ...
              Zuletzt geändert von Oldmcreher; 28.06.2008, 13:08.

              Kommentar


              • #8
                Das Schript muss irgendwo ziemlich ans Ende. Jedenfalls NACH der letzten Ausgabe.

                Und da du das Script ja nicht einfach nur kopierst, sondern auch versucht hast zu verstehen, bis du beim Blick auf ob_get_contents natürlich auch auf ob_start gestoßen.

                Insgesamt ist diese ganze Output-Buffering Sache natürlich ziemlich überflüssig. Wenn man klug gewesen wäre, hätte man den ganzen "Output" direkt in die Variable $data geschrieben.

                Kommentar

                Lädt...
                X