Seitdem Blogs die Runde machen, ist auch die Verteilung von Informationen per RSS in aller Munde. Tim Yang gibt in seinem Artikel 15 things you can do with RSS eine Menge Anstöße, zu was RSS alles gut ist. Über einige Recherchen traf ich endlich auf MagpieRSS, einem PHP-basierten RSS-Parser, der wirklich ein paar herausragende Funktionen bietet. Zeit, sich das Ding mal anzusehen.Ein TausendsassaHat man eine PHP-Engine zur Hand, um MagpieRSS überhaupt einzusetzen, stellt sich der kleine Parser als Tausendsassa heraus. Die Klasse unterstützt derweil RSS 0.9 und 1.0, 0.9x und 2.0, als auch Atom 0.3, kann also zu ziemlich jedem Zweck eingesetzt werden. Ausserdem ist sie sehr Traffic-freundlich, denn sie benutzt die Conditional GET-Methode des HTTP-Protokolls, um RSS-Feeds zu cachen, so dass nicht bei jedem Request der gesamte Feed gelesen wird. Del.icio.us, Flickr und alle RSS-anbietenden Services dieser Welt werden es dem Anfragenden danken ;) MagpieRSS unterliegt übrigens der GPL-Lizenz.Die Installation…gestaltet sich denkbar einfach. Nach dem Download besitzt man ein gut 35 KB grosses Archiv auf der Festplatte, in dem die meisten Dateien jedoch gar nicht zum eigentlichen Parser gehören. Die mitgelieferte Dokumentation in README, INSTALL und CHANGES-Dateien kann man durchaus als beispielhaft bezeichnen. Mit dabei ist ausserdem ein Beispiel-Verzeichnis und ein auf MagpieRSS angepasstes Smarty-Derivat, um den Einsatz des Parsers zu veranschaulichen.Für den gepflegten Hacker sind allerdings nur die Dateien rss_cache.inc, rss_fetch.inc, rss_parse.inc und rss_utils.inc interessant, ausserdem das Verzeichnis /extlib, in dem Snoopy (ein kleiner HTTP-Client) enthalten ist. Snoopy bedeutet, dass MagpieRSS auch auf das zuletzt ins Gerede gekommene allow_url_fopen verzichten kann.Um das Caching zu aktivieren gibt es mehrere Wege. Hat man entsprechende Rechte im Dateisystem des Webservers, reicht die Erstellung eines Verzeichnisses /cache, mit Schreibrechten für den Webserver. Zur Not kann man das Caching im /tmp-Verzeichnis zulassen, dafür reicht die folgende Konfigurationszeile:// set magpie cache-dir to /tmpdefine('MAGPIE_CACHE_DIR', '/tmp/magpie_cache');Für das tatsächliche Auslesen von Feeds wird der Parser (rss_fetch.ini) denkbar einfach in ein PHP-Skript eingebunden:// load parserrequire_once('magpierss/rss_fetch.inc');In Produktivsystemen empfiehlt es sich, dem require_once ein @-Zeichen voranzustellen, so dass Fehlermeldungen des Skriptes unterdrückt werden. Andererseits ist in solchen Systemen möglichst die Direktive display_errors in der php.ini oder per .htaccess ausgeschaltet. Benutzt man eine .htaccess-Datei kann man gleich das Auslesen der *.inc-Dateien untersagen:# restrict viewing of *.inc-files<Files *.inc>deny from all</Files>Ist der Parser eingebunden, ist das Lesen eines Feeds ein Kinderspiel:// set url$url = "http://piepmatzel.de/piepmatzel.xml";// fetch feed$rss = fetch_rss($url);Im Objekt $rss steht dann der Feed als assoziatives Array zur Verfügung. Der Artikel “RSS with PHP and Magpie” schlägt vor, das Objekt noch per array_slice vorzubereiten:// fetch last 5 items$items = array_slice($rss->items, 0, 5);Danach kann der Array per foreach durchlaufen und ausgegeben werden:// list array entriesecho "<ul>n";foreach ($items as $item) {echo "<li>" . $item['title'] . "</li>n";}echo "</ul>";Anwendungen per MagpieRSSDie dargestellten Beispiele sind nur der rudimentärste Ansatz für die Verwendung von MagpieRSS, denkbar (und auch schon umgesetzt) sind alle möglichen Aggregatoren für RSS-Feeds. Beispiele finden sich unter findforward.com, feedonfeeds.com und auch im WordPress-Plugin WordPress RSS Aggregator.Baut man ein Polling, das die Daten eines abgerufenen Feeds zusätzlich in einer Datenbank speichert, hat man nicht nur einen hervorragenden Backup-Mechanismus und ein Web-Archiv erzeugt, in dem auch über Monate und Jahre hinweg Inhalte erhalten bleiben, sondern befindet sich fast auf dem Weg zu Services wie bloglines.com oder dem RSS-Verzeichnis. Alles, was sich dem noch gegenüberstellt, ist die Bandbreite des eigenen Hostings ;)Als Betreuer ziemlich vieler Systeme in einer Firma, ist es sogar möglich, sehr schnell ein Infoverzeichnis für Statusmeldungen von Applikationen und Schnittstellen zusammenzubauen. Wir betreuen einige interne Applikationen und Schnittstellen, die ihre Informationen in getrennte logfiles und Datenbank-Tabellen schreiben.Schreibt man stattdessen Systeminformationen und Benutzeraktionen in ein RSS und installiert man ein zentrales Polling dieser Informationen, erhält man ein Kontrollzentrum, ohne ständig zwischen Servern, deren Logfiles (*nix, Windows etc.), Ticketsystemen und applikationseigenen Statusinformationen hin- und her wechseln zu müssen.Voraussetzung ist natürlich, dass sich die Server gegenseitig adressieren können. In einer komplexen Architektur mit Internet-Servern, Intranet- (LAN/WAN) und DMZ-Systemen kann das bisweilen schonmal ein bisschen Bastelei und vor allem Vorsicht erfordern. Kein Sysadmin sieht seine Statistiken gerne exploited im Internet ;)FazitMagpieRSS ist eine Werkzeugkiste, die mit ihrer (derzeitigen) Version 0.71.1 einen beeindruckenden Funktionsumfang bietet. Wer gerne an seinem Blog bastelt oder sich mit Content Syndication befasst, dem fallen bestimmt bereits mehrere Anwendungsgebiete ein. Mit MagpieRSS kommen Implementierungen in greifbare Nähe, ohne dass man zu tief in XML-Parsing, Encoding usw. einsteigen muss. Ihr solltet euch Zeit nehmen, die offizielle Webseite durchzusurfen und die Vielzahl an Links zu Umsetzungen und Tutorien zu betrachten. Ich hoffe, in Kürze auch das eine oder andere Anwendungsbeispiel anzubieten. Eine kleine Beispielseite findet ihr hier.
-
Letzte Artikel
Letzte Kommentare
- salome bei Snow Leopard und Apache, PHP und MySQL
- Chris bei PHP Code Sniffer und Mess Detector in Netbeans 7.0 integrieren
- Chris bei PHP Code Sniffer und Mess Detector in Netbeans 7.0 integrieren
- Chris bei PHP Code Sniffer und Mess Detector in Netbeans 7.0 integrieren
- Oliver bei PHP Code Sniffer und Mess Detector in Netbeans 7.0 integrieren
Archive
- Mai 2011
- April 2011
- September 2010
- Juni 2010
- Mai 2010
- Februar 2010
- Dezember 2009
- September 2009
- Juni 2009
- Mai 2009
- April 2009
- Februar 2009
- Januar 2009
- August 2008
- Juli 2008
- April 2008
- März 2008
- Februar 2008
- Januar 2008
- Dezember 2007
- November 2007
- Oktober 2007
- Juli 2007
- Mai 2007
- April 2007
- März 2007
- Februar 2007
- Dezember 2006
- Oktober 2006
- September 2006
- August 2006
- Juli 2006
- Mai 2006
- April 2006
- März 2006
- Februar 2006
- Januar 2006
- November 2005
- Oktober 2005
- September 2005
- August 2005
- Juli 2005
- Juni 2005
- Mai 2005
- April 2005
- März 2005
- Februar 2005
- Januar 2005
- Dezember 2004
- November 2004
- Oktober 2004
- September 2004
- August 2004
- Juli 2004
- Juni 2004
- Mai 2004
- April 2004
- März 2004
Kategorien
Meta
Pingback: Hasematzel.de » Archiv » Spielereien mit MagpieRSS (Teil II)
Pingback: Hasematzel.de » Archiv » Kleine Spielereien auf Hasematzel.de
Thanks for linking to my post on RSS! But I’m afraid you will have to update the link. The old post got deleted. But there is a wikified version that people have been contributing to. It’s at http://timyang.com/wiki/doku.php?id=lists:thingsyoucandowithrss
Thinking about a church wedding? Congratulations, we wish you well as you beginyour journey into married life. In this section you will find a number of …