Nasıl bir RSS beslemesi oluşturur?

7 Cevap php

Ben kendim yapmadım, ve ben bir yayına abone hiç, ama ben bir tane oluşturmak zorunda gidiyorum gibi görünüyor, bu yüzden merak ediyorum. Bana bariz görünüyor tek yolu sistem yeni bir öğe (blog yazısı, haber, ne olursa olsun) ile güncellenen zaman, yeni bir unsur rss dosyasına yazılması gerektiğidir. Veya alternatif sistemi güncellemeleri için bir kaç kez bir gün kontrol eder ve rss dosyaya yazar bir komut dosyası var olmasıdır. Ama bunu yapmanın daha iyi bir yolu muhtemelen vardır.

Ve ayrıca, eski elemanları yenileri eklendikçe çıkarılmalıdır?

Edit: Ben bir mySQL veritabanı ile, özellikle CodeIgniter'ı kullanarak, PHP çalışıyorum, söz olmalıydı.

7 Cevap

Ben cevap bir RSS beslemesi verilerin başka bir görünümden daha fazla bir şey olması sahip söyleyebilirim. Bu rss feed sadece veritabanındaki verilerin bir xml temsilidir anlamına gelir. Okuyucular sonra belirli url vurdu ve uygulama mevcut bilgileri geri almak mümkün olacak.

Bir RSS Feed belirli bir şemaya uyan sadece bir XML belge olduğunu.

Önceki here var

What language are you working in? You can easily script the xml output based on some content in your application. You don't need to explicitly save the file to the file system. It can just be created on the fly

I Magpie RSS iyi sonuçlar var. Dahil cacheingini kurmak ve yapmanız gereken tüm verileri almak ve ardından güncelleme sıklığını kolları Saksağan RSS, için sonuç göndermek için sorgu yazmaya.

Sunucu, özellikle ağır yük altında olduğu sürece, bir RSS dosyası yazma olmaz - güncellenecektir şeyler için bir sorgu (veya bir dizi ekler sorguları bir dizi) tüm ihtiyaç vardır. Tarihe göre sıralanır ve sonra X ile sınırlı ve siz de 'eski şeyler kaldırma' konusunda endişelenmenize gerek olmayacaktır edilecek sorgu / ies yazın.

İşte benim localhost dev siteler için canlı yer imi olarak kullanabilirsiniz basit bir ASP.NET 2 tabanlı RSS beslemesi bulunuyor. Başlamanıza yardımcı olabilir:

<%@ Page Language="C#" EnableViewState="false" %>
<%@ OutputCache Duration="300" VaryByParam="none" %>

<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Configuration" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.DirectoryServices" %>

<script runat="server">

protected void Page_Load(object sender, EventArgs e)
{
    System.Collections.Specialized.StringCollection HideSites = new StringCollection();
    System.Collections.Generic.List<string> Sites = new System.Collections.Generic.List<string>();

    HideSites.Add(@"IISHelp");
    HideSites.Add(@"MSMQ");
    HideSites.Add(@"Printers");

    DirectoryEntry entry = new DirectoryEntry("IIS://LocalHost/W3SVC/1/ROOT");
    foreach (DirectoryEntry site in entry.Children)
    {
        if (site.SchemaClassName == "IIsWebVirtualDir" && !HideSites.Contains(site.Name))
        {
            Sites.Add(site.Name);
        }
    }

    Sites.Sort();

    Response.Clear();
    Response.ContentType = "text/xml";
    XmlTextWriter RSS = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
    RSS.WriteStartDocument();
    RSS.WriteStartElement("rss");
    RSS.WriteAttributeString("version","2.0");
    RSS.WriteStartElement("channel");
    RSS.WriteElementString("title", "Localhost Websites");
    RSS.WriteElementString("link","http://localhost/sitelist.aspx");
    RSS.WriteElementString("description","localhost websites");

    foreach (string s in Sites)
    {
        RSS.WriteStartElement("item");
        RSS.WriteElementString("title", s);
        RSS.WriteElementString("link", "http://localhost/" + s);
        RSS.WriteEndElement();
    }

    RSS.WriteEndElement();
    RSS.WriteEndElement();
    RSS.WriteEndDocument();
    RSS.Flush();
    RSS.Close();
    Response.End();
}

</script>

Bir RSS beslemesi belli bir şekilde biçimlendirilmiş ve bir web sayfasından bağlı sadece bir XML belgesidir.

Take a look at this page (http://cyber.law.harvard.edu/rss/rss.html) which details the RSS specification, gives example RSS files for you to look at and shows you how to link to them from your site.

Oluşturduğunuz nasıl belge size kalmış. Eğer bir dil özel bir XML nesnesini kullanmak, bir metin editörü elle yazmak, ya da bir ASPX / PHP / diğer sayfasını vurdu ve RSS belgesiyle birlikte doğru içerik türü başlıklarını gönderebilir.

Eğer aşağı almak zaman bütün bu zor değil. iyi şanslar!

Bu yaklaşım iki yolu vardır. İlk istek üzerine dinamik RSS belge oluşturmaktır. İkinci ilgili bir değişiklik olduğunda statik bir dosyaya yazmak için. Ikincisi daha hızlı, ama (muhtemelen) pek çok yerde vs için sadece bir beslemesini güncellemek için bir çağrı gerektirir.

Sadece değişikliklerle belgeyi düzenlemek olabilir iken her iki yöntem sayesinde, sadece en son (10-50) öğeleri ile bütün belgeyi her seferinde yeniden çok daha basittir.

Zaten HTML mevcut unsurların bir yem üretmek istiyorsanız, bir seçenek (http://microformats.org/wiki/hAtom) hAtom kullanmak için HTML biçimlendirme değiştirmek ve daha sonra bir hAtom-> Atom veya hAtom-> yoluyla besleme okuyucuları işaret etmek RSS vekil.