RSS-Feed via PHP realisieren?

filament

Erfahrenes Mitglied
Hallo Leute,

ich habe folgendes Script geschrieben, um eine XML Datei zu erstellen:

PHP:
<?php
include("includes/config.php");
header("Content-type: application/xml");
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
$verbindung = mysql_connect($server, $user, $passwort) or die ("Es konnte keine Verbindung zum Server hergestellt werden!");
mysql_select_db($datenbank) or die ("Diese Datenbank existiert nicht!");
?>
<rss version="2.0">
 <channel>
  <title>RSS-Feed</title>
  <link>http://www.mysite.de</link>
  <discription>My News Feed</discription>
  <language>de-DE</language>
  <?php
  $datensatz = mysql_query("SELECT datum FROM news ORDER BY id DESC LIMIT 0,1");
  $row = mysql_fetch_assoc($datensatz);
  ?> 
  <lastBuildDate><?php echo date("D, d M Y H:i:s T", $row['datum']); ?></lastBuildDate>
  <?php
   $daten_news = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT 0,200");
   while ($row = mysql_fetch_assoc($daten_news))
   {
    echo "    <item>\n";
    echo "     <title>".$row['schrift']."</title>\n";
    echo "     <author>".$row['autor']."</author>\n";
    echo "     <pubDate>".date("D, d M Y H:i:s T", $row['datum'])."</pubDate>\n";
    echo "     <link>http://www.mysite.de/news.php?".$row['id']."</link>\n";
    echo "     <discription>".$row['text']."</discription>\n";
    echo "    </item>\n";
   }
  ?>
 </channel>
</rss>
<?php mysql_close($verbindung); ?>

Nun meine Frage: Bei großer Anzahl an Aufrufen der RSS Datei (Hier rss.php) wird die Datenbank zu sehr beansprucht. Ich würde nun gerne eine statische Datei erzeugen und diese dann immer überschreiben. Wie stelle ich das am einfachsten an?

Ich hab schon was von SimpleXML und DOM gelesen, aber irgendwie blicke ich da gar nicht durch. Gibts vielleicht ne einfachere Variante? So ähnlich als wenn ich ne txt Datei erstelle und reinschreibe, das muss doch möglich sein?

Bitte nicht den Code nur reinhämmern. Eine Erklärung wäre schön oder ein erklärender Link, denn ich möchte es ja verstehen und nicht einfach kopieren. P.S: Timm Commans hatte hier nen Video Tutorial geschrieben dazu und hatte einen zweiten Teil genau mit dieser Problematik angekündigt, gibts das vielleicht irgendwo? (Habs leider nicht finden können)

Danke im Voraus!
Gruß Ronny
 
Hmm das versteh ich jetzt ohne den Link gelesen zu haben nicht direkt (in Zusammenhang mit meinem Vorhaben). Werde aber baldmöglichst mir deinen Link mal genau durchlesen.

Wäre es denn vielleicht sinnvoll einfach mit fopen und fputs eine Datei zu schreiben und bei jedem Neuaufruf die aktuelle Datei zu löschen, z. B. via Cronjob? Oder kann ich xml Dateien nicht auf diese Weise erstellen?
 
Nun, Du wolltest doch die Zugriffe auf die DB reduzieren. Du hast zB diese zwei Möglichkeiten.

(1) Von mir: Du benutzt obige Idee, in der das Neuschreiben der XML-Datei mit einer halbautomatischen Anforderung geschieht. Ist die RSS-Datei älter als X wird sie neu erstellt.

(2) Von Dir: Du machst es mithilfe eines cronjob, der fortwährend alle x Minuten ein php-Script aufruft, welche die RSS-Datei neuschreibt.

Beide unterscheiden sich nur minimal. Du musst entscheiden, welche zu weniger DB-Zugriffen führt.

mfg chmee
 
Zuletzt bearbeitet:
Zurück