tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von chmee
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
278
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    filament filament ist offline Mitglied Silber
    Registriert seit
    Oct 2010
    Beiträge
    53
    Hallo Leute,

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

    PHP-Code:
    <?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
     

  2. #2
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Einfache Möglichkeit wäre, per ob_start() und ob_get_clean() die Ausgabe zwischenzuspeichern und dann am Anfang zu entscheiden,

    ist die gespeicherte Version älter als zB 30 Minuten? Erstelle eine Neue.
    Ist sie jünger? zeige die gespeicherte Version.

    Link: http://phpperformance.de/ausgaben-in-cache-speichern/

    mfg chmee
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  3. #3
    filament filament ist offline Mitglied Silber
    Registriert seit
    Oct 2010
    Beiträge
    53
    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?
     

  4. #4
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    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
    Geändert von chmee (06.06.11 um 18:16 Uhr)
    filament bedankt sich. 
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

Ähnliche Themen

  1. RSS Feed
    Von styler2go im Forum XML Technologien
    Antworten: 5
    Letzter Beitrag: 31.03.08, 07:51
  2. RSS Feed
    Von styler2go im Forum HTML & XHTML
    Antworten: 4
    Letzter Beitrag: 28.03.08, 21:06
  3. RSS Feed
    Von Peter Klein im Forum PHP
    Antworten: 4
    Letzter Beitrag: 15.01.05, 20:34

Stichworte