[Suche] RSS Feeds auf HP darstellen

Soltan

Cadet 4th Year
Registriert
Juli 2007
Beiträge
100
Hallo CB Board,
ich habe folgendes vor und hoffe ihr könnt mir ein bisschen dabei Helfen.

Idee:
Ich möchte verschiedene RSS Feeds auf meiner HP anzeigen. Ich nehme z.b. das RSS von Bild.de und füge es in mein Script ein. Dann soll ne Art Cron oder so laufen dass mir alle 10 Minuten das rss holt und wenn es neue einträge gibt diese als ganz normalen Textlink in einer Tabelle untereinander auf meiner HP darstellt.

Soll ungefähr so aussehen:
10.12 Uhr 3 nackige Frauen gesehen (news von Bild.de)
10.17 Uhr 3 nackige Männer gesehen (news von Männer.de)
17.03 Uhr Rocky 17 im Kino (news von Kino.de)

Wisst ihr was ich meine?

Umsetzung:
Da ich selbst sehr schwach bin was Programmierung angeht dachte ich an ein fertiges Script was ich mir hier und da bischen anpassen kann. php mit mysql kann es ruhig sein da es auf meinem VServer laufen soll.

Bevor ich jetzt das Rad neu erfinde hoffe ich der ein oder andere hat nen heißen Link für mich wo ich ein kompletten Seitentemplate finde. Die HP hat sonst keine weiteren Inhalte, kann also was fertiges sein.

Gibt es sowas?

Für eure Zeit und Hilfe bin ich sehr dankbar.

Gruß
Soltan
 
Zuletzt bearbeitet:
Danke für die Links.
Das Problem ist das ich da nix finde. Es gibt zwar tausende CMSscripte und Newsseitenscripte die eniem auch gleich nen RSS zu SEINER Seite machen aber nix wo man externe/fremde RSS einfach einbinden kann.
 
moment, ich schreib dir schnell was...

es gibt in PHP eine XML_CLASS Objekt mit dem man superschnell sowas machen kann :-)


nur mit dem alle 10min nachladen kann ich dir so schnell nicht dienen, das müsstest du halt mit Javascript machen. Stichwort XMLHttpRequest oder Ajax...
 
so, endlich fertig:

PHP:
<?php

$xml = file_get_contents("https://www.computerbase.de/rss/news.xml");
$xml = new SimpleXMLElement($xml);
$i = 0;
$max = 3;
while($i < $max)
{
$date = substr($xml->channel->item[$i]->pubDate, 5, 11);
$date = explode(" ", $date);
switch($date[1])
{
case "Jan":
	$month = "01";
	break;
case "Feb":
	$month = "02";
	break;
case "Mar":
	$month = "03";
	break;
case "Apr":
	$month = "04";
	break;
case "May":
	$month = "05";
	break;
case "Jun":
	$month = "06";
	break;
case "Jul":
	$month = "07";
	break;
case "Aug":
	$month = "08";
	break;
case "Sep":
	$month = "09";
	break;
case "Oct":
	$month = "10";
	break;
case "Nov":
	$month = "11";
	break;
case "Dec":
	$month = "12";
	break;
default:
	$month = "unknown";
}
echo $date[0].". ".$month.". ".$date[2];
echo " <a href=\"".$xml->channel->item[$i]->link."\">".utf8_decode($xml->channel->item[$i]->title)."</a><br />\n";
$i++;
}
?>

mein kleiner RSS Feed Parser :P
 
Noch was:
1. Kannst du das Datum sicher besser umwandeln (gibts bestimmt ne Funktion).
2. Würde ich das immer nur dann neu abrufen, wenn das letzte Mal > 10 Minuten her ist (und in einer Datenbank zwischenspeichern).

Gruß David
 
lol, warum zwischenspeichern? is doch total sinnfrei, das Teil zieh überhaupt keine Performance und hat eine Renderzeit von > 200ms, kommt halt ganz auf die Latenz des Servers zum Host des Feeds an...

Desweiteren braucht das Script grad mal 5536 Byte Memory mit dem aktuellen Inhalt, also je nach Feed sagen wir mal 3-7 Kilobyte, das ist nicht wirklich die Welt...


das mit dem Datum umwandeln, kA wie :P das ist quick n dirty programmiert - wie immer :P
aber prinzipiell ist meines nicht die optimalste Methode, das ist eher so Haudrauf mässig gemacht :P

was ich gern noch hätte ist, das ganze in Timestamps umzuwandeln damit man Feeds von mehreren Seiten einlesen kann und dann einfach nach dem aktuellsten Timestamp sortiert und diese dann ausgibt...

Nach der Mittagspause schmeiß ich mich glaub ich mal ran..


btw: http://kantholy.moretoast.de/blog/?p=31 :P
 
Update:

v 0.2

* fixed: meine geile Datumsumrechnung - strtotime();

PHP:
<?php

$xml = file_get_contents("https://www.computerbase.de/rss/news.xml");
$xml = new SimpleXMLElement($xml);
$i = 0;
$max = 3;

while($i < $max)
{
	$date = substr($xml->channel->item[$i]->pubDate, 5, 11);
	$date = strtotime($date);
	echo date("d.m.Y", $date);
	echo " <a href=\"".$xml->channel->item[$i]->link."\">".str_replace("?", "", utf8_decode($xml->channel->item[$i]->title))."</a><br />\n";
	$i++;
}
?>
 
Naja, 1. mal sollte man immer an Performance denken - stell dir vor du hast plötzlich 100 Zugriffe pro Minute... ComputerBase dankt dir.
Ich würde es auf jeden Fall in einer Datenbank zwischenspeichern. Nicht wegen der Geschwindigkeit der einzelnen Abfragen, sondern wegen der Belastung der Server.

Gruß
 
türlich dankt mir Computerbase,

aber überleg mal, in einem Zeitalter der Internet Flats und bei den Servern mit unlimited Traffic ist das doch mal herzhaft egal oder nicht?
 
Sorry für den Doppelpost, hab bei dem Miniding mal bissl Performance optimiert:

25.04.2008 12:54 GeForce 9600 GSO von XFX gelistet
25.04.2008 12:05 Super Talent mit 2-GB-Modulen DDR3-1800-RAM
25.04.2008 11:42 Nvidias Grafikkarten-Angebot ab dem 3. Quartal
Rendering Time: 160.01 ms
Memory Usage: 5272 Bytes

Code:

PHP:
<?php
$time_start = microtime(true);
$mem_start = memory_get_usage();
$xml = file_get_contents("https://www.computerbase.de/rss/news.xml");
$xml = new SimpleXMLElement($xml);
$i = 0; 
$max = 3;
while($i < $max)
{
	echo date("d.m.Y H:i", strtotime($xml->channel->item[$i]->pubDate));
	echo " <a href=\"".$xml->channel->item[$i]->link."\">".str_replace("?", "", utf8_decode($xml->channel->item[$i]->title))."</a><br />\n";
	$i++;
}
$time_end = microtime(true);
$mem_end = memory_get_usage();
echo "Rendering Time: ".round(($time_end - $time_start)*1000, 2) ." ms<br />\n";
echo "Memory Usage: ".($mem_end - $mem_start)." Bytes";
?>
 
Naja ich will jetzt eigentlich nicht mehr schrieben - aber überleg mal die Programmierer von Computerbase bzw. dem BB würden so denken... Dann bräuchten die 3x so viele Server.
Und für was eine Datenbank normalisieren? Speicher kostet ja nichts.
 
Halli Hallo,
grundsätzlich ist es wohl nicht verkejrt so resourcenschonend wie möglich zu coden. Nen nachteil ist das wohl auf keinen Fall.
Mir reicht aber dieses QnD teil auf alle Fälle. Das ist mir eine sehr große Hilfe. Darauf kann ich aufbauen. Und wenn es wirklich mal 1000 RSS Feeds / 10 Min. sind dann wäre ich ja auch bereit in hardware zu investieren ;)

Ganz großes Lob und vielen lieben Dank an Kant-holz. :schluck:
 
So ein Skript ist für den produktiven Einsatz nicht geeignet.


Wenn ich rausfinden würde, dass jemand mit so einem Skript meine RSS Feeds parst, ohne zu cachen, dann würde ich ihn einfach blocken.


Du belastest ja nicht nur deinen Server, sondern auch den, wo die Ursprungsdaten herkommen.


DOS könnte dann zum Problem werden.
 
Genau meine Worte... nur anders ;)
Einfach zumindest für 10 Minuten cachen... wenn ($letzterAbruf-date())>600 dann hole neue Daten, ansonsten die Werte aus der Datenbank.

Gruß
 
hmm... geht natürlich auch, aber so hat man halt wirklich immer die aktuellen Daten :P

mich würden mal realistische Werte interessieren für so etwas...

kA, nur mal so als Referenzwert für eine "Cachezeit"...


wobei ich ganz ehrlich sagen würde: wenn ich rausfinden würde wenn eine andere Seite sowas tut würd ich die nicht gleich blocken, sondern einfach mal so zum Spass anfragen was denn da abgeht...

naja mal gucken ob ich das noch weiter ausbau :P
 
Kant-holz schrieb:
hmm... geht natürlich auch, aber so hat man halt wirklich immer die aktuellen Daten :P

Ja, solange bis der Admin was dagegen unternimmt. Er muss dich ja nicht unbedingt blocken, er kann dir auch einfach falsche Informationen vorlegen :D



Kant-holz schrieb:
mich würden mal realistische Werte interessieren für so etwas...

5 - 10 Minuten, wie auch davidbaum schon gesagt hat.



Kant-holz schrieb:
wobei ich ganz ehrlich sagen würde: wenn ich rausfinden würde wenn eine andere Seite sowas tut würd ich die nicht gleich blocken, sondern einfach mal so zum Spass anfragen was denn da abgeht...

zum Spaß? Darf ich fragen, wieviele eigene Server du betreibst?
 
zum Spaß? Darf ich fragen, wieviele eigene Server du betreibst?

direkt betreiben keinen, aber als PHP Mensch mitwirken, und der Server langweilt sich...
Vor paar Tagen erst wie AjaxComments eingebaut... der fragt alle 10sek bei jedem Besucher der JS aktiviert hat die Datenbank nach neuen Comments ab und wie gesagt... der langweilt sich (http://bf-games.net)
 
Klar, ineffiziente Programmierung kann man in einem gewissen Rahmen auch mit Performance killen, somal dein RSS Skript auf dieser Seite wahrscheinlich eh nicht eingesetzt wird (sags mir wenn ich mich irre).


Eine Datenbankabfrage ist natürlich kein Problem, da musst du ja nicht auf einen externen Server zugreifen, etc.
 
Zurück
Oben