Separates Feed Script für News auf Basis Atom Version 1

Hilfe zu Modulen und Tags
Piratos

Separates Feed Script für News auf Basis Atom Version 1

Post by Piratos »

Hier nun mal eine kleine "Spende" für Leute, die den kryptischen Link aus dem Module News schlecht unter die Leute bringen kann - ein separates Script - nur für mysql - User.

Erzeugt einen Atom Version 1.0 Feed, und ist einwandfrei z.B. mit Thunderbird zu verbinden.

Script  in den ersten Zeilen anpassen ,unter dem Namen atom.php in die CMSMS root kopieren und das wars - erzeugt einen validen Feed.

Bitte die Coprights drin lassen.

Das Script ist sehr fix und verbrät gerade mal 2 Mysql Abfragen, wobei eine eigentlich nur für die aktuelle 013.1 erforderlich ist, woraus ihr sehen könnt, dass diese Version damit schon abgesegnet ist.

Code: Select all

<?php
$starttime = microtime();
require_once('config.php');

// Hier anpassen wenn erforderlich

$websitetitel='NoName';   // wird nur verwendet, wenn es keine sitreprefs gibt  cmsms version < 13.1
$untertitel='NewsFeed';
$email ='noreply@'.$_SERVER['HTTP_HOST'];
$kategorien='Softwaretest,General';    // sind keine durch Komma getrennte angegeben,werden alle verwendet
                                      // auf exakte gleiche Schreibweise achten

// Ende der Anpassung


$linkteil='?module=News&id=cntnt01&cntnt01action=detail&cntnt01articleid=';
function tstamp($s)
{
if ($s =='') return '';
$t=explode(' ',$s);
$j=explode('-',$t[0]);
$u=explode(':',$t[1]);
$ts= mktime ($u[0],$u[1],$u[2],$j[1],$j[2],$j[0]);
return $ts;
}


$dbhost=$config['db_hostname'];
$dbuser=$config['db_username'];
$dbpasswd=$config['db_password'];
$dbname=$config['db_name'];
$root_url=$config['root_url'];
$feedurl=$root_url.'/atom.php';
$homepage=$root_url;
$table_prefix=$config['db_prefix'];
if (!$config['default_encoding'] == '')
 $encoding=$config['default_encoding'] ;
else
 $encoding =$config['admin_encoding'];
$now=time();
$nownull=$now-1;

if ($kategorien !='')
{
  $kats=explode(",",$kategorien);
}
$sql= "SELECT  k.news_category_id, k.news_category_name, n.news_id,n.news_category_id,n.news_title,n.news_data,n.summary,n.end_time,n.status,n.create_date,n.modified_date FROM `".$table_prefix."module_news_categories` k,`".$table_prefix."module_news` n WHERE n.status = 'published' AND IFNULL(n.end_time,$nownull)<$now ";
$ext='';
if ($kats !=null)
{ $c=count($kats);
  $i=0;
  $ext=" AND  k.news_category_id = n.news_category_id AND (";
  foreach($kats as $one)
  {
     $ext .=" k.news_category_name = '$one' ";
     $i++;
     if ($i < $c) $ext .="OR ";
  }
  $ext .=")";
}

$sql .=$ext;

$db = mysql_connect($dbhost,$dbuser,$dbpasswd) or die("Keine Verbindung zum Datenbanksystem gelungen: " . mysql_error());
mysql_select_db($dbname) or die("Auswahl der Datenbank".$dbname." fehlgeschlagen");
//echo $sql;
$result=mysql_query($sql);
$pref=mysql_query("SELECT sitepref_value FROM `".$table_prefix."siteprefs` WHERE  `sitepref_name` = 'sitename'");
if ($pref) {
  $row = mysql_fetch_assoc($pref);
  $titel =$row['sitepref_value'];
}
else
{
  $titel=$websitetitel;
}

// Copyright bitte belassen
$copyright="CMSMS Atom 1.0 by Jan Czarnowski(c)2006";
$out='<?xml version="1.0" encoding="'.$encoding.'"?><feed xmlns="http://www.w3.org/2005/Atom">';
$out .='<title type="text">'.$titel.'</title><subtitle type="text">'.$untertitel.'</subtitle>';
$first=true;
if ($result)
{
  $dbr = mysql_fetch_assoc($result) ;
  while ($dbr)
  {
    if ($dbr['create_date']==null) $dbr['create_date']= $nownull; else $dbr['create_date']=tstamp($dbr['create_date']);
    if ($dbr['modified_date']==null) $dbr['modified_date']= $now;else $dbr['modified_date']=tstamp($dbr['modified_date']);
    if ($dbr['create_date']== $dbr['modified_date']) $dbr['modified_date']=$dbr['modified_date']+1;
    $d_a=date("Y-m-d H:m:s", $dbr['modified_date']);
    $d_b=date("Y-m-d H:m:s", $dbr['create_date']);
    $d = explode(" ", $d_a);
    $date = $d[0];
    $time = $d[1];
    $datetime = implode("T",$d);
    $d2 = explode(" ", $d_b);
    $date2 = $d2[0];
    $time2 = $d2[1];
    $datetime2 = implode("T",$d2);
    if ($first)
    {
      $first=false;
      $out .="<updated>".$datetime."Z</updated>";
      $out .="<id>$feedurl</id>";
	  $out .='<link rel="alternate" type="text/html" href="'.$homepage.'"/>';
	  $out .='<link rel="self" type="application/atom+xml" href="'.$feedurl.'"/>';
	  $out .='<rights>'.$copyright.'</rights>';
	  $out .='<generator uri="'.$feedurl.'" version="1.0">'.$copyright.'</generator>';
	 }

      $pid=$dbr['news_id'];
      $betr=trim($dbr['news_title']);
      if (strlen($betr) == 0) $titel1 = 'Kein Titel'; else $titel1= $betr;
      $out .='<entry><title type="text">'.$titel1.'</title>';
	  $out .='<link type="text/html" href="'.$root_url.'/index.php'.$linkteil.$pid.'"/>';
	  $out .='<id>'.$pid.'</id>';
	  $out .='<published>'.$datetime2.'Z</published>';
	  $out .='<updated>'.$datetime.'Z</updated>';
      $out .='<author><name>'.htmlspecialchars($titel).'</name><uri>'.$homepage.'</uri> <email>'.$email.'</email>	</author>';
      $neu=$dbr['news_data'];
      if (strlen($dbr['summary'])==0) $kurz = substr($neu,0,90).' ....';else $kurz=$dbr['summary'];
      $out .='<summary type="html">'.htmlspecialchars($kurz).'</summary>';
      $out  .= '<content type="html" xml:lang="de">'.htmlspecialchars($neu).'</content></entry>';
      $dbr = mysql_fetch_assoc($result);
    }
}
$out .="</feed>";
$endtime = microtime();
list($a_dec, $a_sec) = explode(" ", $starttime);
list($b_dec, $b_sec) = explode(" ", $endtime);
$verbrauch = $b_sec - $a_sec + $b_dec - $a_dec;
$out .="<!--CMSMS Atom-Feed needs  $verbrauch Seconds  and ".(function_exists('memory_get_usage')?memory_get_usage():'n/a')." Bytes of Memory RAM --><!-- CMSMS ATOM Version 1.0 (c) Jan Czarnowski - http://piratos.byethost33.com -->";
header("Content-Type: application/xml");
echo $out;
?>

Last edited by Piratos on Sat Apr 22, 2006 3:35 pm, edited 1 time in total.
cyberman

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by cyberman »

Wie immer besten Dank für deine "Quick Tipps"  :) ...
Piratos

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by Piratos »

Na da gab es doch einen User, der so etwas mal probieren wollte - Feedback wäre nicht schlecht.
Darien

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by Darien »

Da ich die Idee klasse fand habe ich das mal bei mir ausprobiert und folgendes erhalten:

http://cms.djk-penzberg.de/atom.php

Leider ist der Feed nicht valide und jeder Newsartikel wird viermal aufgeführt. Den Code habe ich 1zu1 kopiert

Bin CMSms-Neuling...vielleicht braucht man auch die neue Beta damit es funktioniert ?
Auf jeden Fall wäre mir http://cms.djk-penzberg.de/atom.php als Feed-Url als der CMSms Standard.

Matthias
Piratos

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by Piratos »

Tja mein Guter - einige Dinge sind von dir selbst gemacht.
a. $websitetitel='NoName';
Hier musst du etwas eingeben, da du einer Version


Der einleitende Tag muss auch kommen, wenn du keinen Websitetitel eingegeben hast und der fehlt auch.

Habe die Version mit der korrigierten ID anbei.

Wäre schön wenn da auch mal jemand anders seine Erfahrung beisteuern könnte.

Code: Select all

<?php
$starttime = microtime();
require_once('config.php');

// Hier anpassen wenn erforderlich

$websitetitel='NoName';   // wird nur verwendet, wenn es keine sitreprefs gibt  cmsms version < 13.1
$untertitel='NewsFeed';
$email ='noreply@'.$_SERVER['HTTP_HOST'];
$kategorien='General';    // sind keine durch Komma getrennte angegeben,werden alle verwendet
                                      // auf exakte gleiche Schreibweise achten

// Ende der Anpassung


$linkteil='?module=News&id=cntnt01&cntnt01action=detail&cntnt01articleid=';
function tstamp($s)
{
if ($s =='') return '';
$t=explode(' ',$s);
$j=explode('-',$t[0]);
$u=explode(':',$t[1]);
$ts= mktime ($u[0],$u[1],$u[2],$j[1],$j[2],$j[0]);
return $ts;
}


$dbhost=$config['db_hostname'];
$dbuser=$config['db_username'];
$dbpasswd=$config['db_password'];
$dbname=$config['db_name'];
$root_url=$config['root_url'];
$feedurl=$root_url.'/atom.php';
$homepage=$root_url;
$table_prefix=$config['db_prefix'];
if (!$config['default_encoding'] == '')
 $encoding=$config['default_encoding'] ;
else
 $encoding =$config['admin_encoding'];
$now=time();
$nownull=$now-1;

if ($kategorien !='')
{
  $kats=explode(",",$kategorien);
}
$sql= "SELECT  k.news_category_id, k.news_category_name, n.news_id,n.news_category_id,n.news_title,n.news_data,n.summary,n.end_time,n.status,n.create_date,n.modified_date FROM `".$table_prefix."module_news_categories` k,`".$table_prefix."module_news` n WHERE n.status = 'published' AND IFNULL(n.end_time,$nownull)<$now ";
$ext='';
if ($kats !=null)
{ $c=count($kats);
  $i=0;
  $ext=" AND  k.news_category_id = n.news_category_id AND (";
  foreach($kats as $one)
  {
     $ext .=" k.news_category_name = '$one' ";
     $i++;
     if ($i < $c) $ext .="OR ";
  }
  $ext .=")";
}

$sql .=$ext;

$db = mysql_connect($dbhost,$dbuser,$dbpasswd) or die("Keine Verbindung zum Datenbanksystem gelungen: " . mysql_error());
mysql_select_db($dbname) or die("Auswahl der Datenbank".$dbname." fehlgeschlagen");
//echo $sql;
$result=mysql_query($sql);
$pref=mysql_query("SELECT sitepref_value FROM `".$table_prefix."siteprefs` WHERE  `sitepref_name` = 'sitename'");
if ($pref) {
  $row = mysql_fetch_assoc($pref);
  $titel =$row['sitepref_value'];
  if ($titel=="") $titel=$websitetitel;
}
else
{
  $titel=$websitetitel;
}

// Copyright bitte belassen
$copyright="CMSMS Atom 1.0 by Jan Czarnowski(c)2006";
$out='<?xml version="1.0" encoding="'.$encoding.'"?><feed xmlns="http://www.w3.org/2005/Atom">';
$out .='<title type="text">'.$titel.'</title><subtitle type="text">'.$untertitel.'</subtitle>';
$first=true;
if ($result)
{
  $dbr = mysql_fetch_assoc($result) ;
  while ($dbr)
  {
    if ($dbr['create_date']==null) $dbr['create_date']= $nownull; else $dbr['create_date']=tstamp($dbr['create_date']);
    if ($dbr['modified_date']==null) $dbr['modified_date']= $now;else $dbr['modified_date']=tstamp($dbr['modified_date']);
    if ($dbr['create_date']== $dbr['modified_date']) $dbr['modified_date']=$dbr['modified_date']+1;
    $d_a=date("Y-m-d H:m:s", $dbr['modified_date']);
    $d_b=date("Y-m-d H:m:s", $dbr['create_date']);
    $d = explode(" ", $d_a);
    $date = $d[0];
    $time = $d[1];
    $datetime = implode("T",$d);
    $d2 = explode(" ", $d_b);
    $date2 = $d2[0];
    $time2 = $d2[1];
    $datetime2 = implode("T",$d2);
    if ($first)
    {
      $first=false;
      $out .="<updated>".$datetime."Z</updated>";
      $out .="<id>$feedurl</id>";
	  $out .='<link rel="alternate" type="text/html" href="'.$homepage.'"/>';
	  $out .='<link rel="self" type="application/atom+xml" href="'.$feedurl.'"/>';
	  $out .='<rights>'.$copyright.'</rights>';
	  $out .='<generator uri="'.$feedurl.'" version="1.0">'.$copyright.'</generator>';
	 }

      $pid=$dbr['news_id'];
      $betr=trim($dbr['news_title']);
      if (strlen($betr) == 0) $titel1 = 'Kein Titel'; else $titel1= $betr;
      $out .='<entry><title type="text">'.$titel1.'</title>';
	  $out .='<link type="text/html" href="'.$root_url.'/index.php'.$linkteil.$pid.'"/>';
	  $out .='<id>'.$root_url.'/index.php'.$linkteil.$pid.'</id>';
	  $out .='<published>'.$datetime2.'Z</published>';
	  $out .='<updated>'.$datetime.'Z</updated>';
      $out .='<author><name>'.htmlspecialchars($titel).'</name><uri>'.$homepage.'</uri> <email>'.$email.'</email>	</author>';
      $neu=$dbr['news_data'];
      if (strlen($dbr['summary'])==0) $kurz = substr($neu,0,90).' ....';else $kurz=$dbr['summary'];
      $out .='<summary type="html">'.htmlspecialchars($kurz).'</summary>';
      $out  .= '<content type="html" xml:lang="de">'.htmlspecialchars($neu).'</content></entry>';
      $dbr = mysql_fetch_assoc($result);
    }
}
$out .="</feed>";
$endtime = microtime();
list($a_dec, $a_sec) = explode(" ", $starttime);
list($b_dec, $b_sec) = explode(" ", $endtime);
$verbrauch = $b_sec - $a_sec + $b_dec - $a_dec;
$out .="<!--CMSMS Atom-Feed needs  $verbrauch Seconds  and ".(function_exists('memory_get_usage')?memory_get_usage():'n/a')." Bytes of Memory RAM --><!-- CMSMS ATOM Version 1.0 (c) Jan Czarnowski - http://piratos.byethost33.com -->";
header("Content-Type: application/xml");
echo $out;
?>

Last edited by Piratos on Thu Apr 27, 2006 3:53 pm, edited 1 time in total.
Piratos

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by Piratos »

So sieht es übrigens mit dem IE 7 aus:



[attachment deleted by admin]
Piratos

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by Piratos »

Wie ich gerade sehe hast du Version 2 ausprobiert - aber immer mehr Ärger mit dem encoding - das scheint noch nicht zu stimmen. Daher die meisten Fehler.

Die noch vorhandenen Fehler sind die Doppelnennungen - es wird immer eine eindeutige Id verlangt.

Was deine Mehrfachanhzeige betrifft könntest du mir mal einen PHPExport nur von den Tabellen schicken die News betreffen - das interessiert mich, da ich in keiner Version so etwas selbst erlebe.

Nachtrag:

Die Ansicht über einen Reader z.B. IE 7 ist aber astrein bis auf die mehrfachen.
Last edited by Piratos on Thu Apr 27, 2006 6:23 pm, edited 1 time in total.
Darien

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by Darien »

Der Feed ist nun einigermaßen valide.
http://www.feedvalidator.org/check.cgi? ... e/atom.php

Hatte natürlich drin rumgespielt und vergessen den Originalcode wieder aufzuspielen  :-[

-> Encodingproblem scheint gelöst.

es bleiben nur noch die Mehrfachnennungen.

Was meinst Du genau mit PHPExport?  Könnte dir die News-Tabellen als SQL oder XML aus MySql exportieren. Schicke dir nen txt-File mit SQL Anwesiung !
Piratos

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by Piratos »

Danke für die Daten - dennoch, bei mir wird das korrekt angezeigt.

Habe den leisen Verdacht, als wenn unterschiedliche Mysql Versionen SQL unterschiedlich verarbeiten.

Da ich bei mir überall die gleichen sehr aktuellen Versionen installiert habe, werde ich mir da etwas einfallen lassen müssen.

Interessante Sache, denn bislang kenne ich mehr oder weniger Probleme mit unterschiedlichen PHP Versionen.
Darien

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by Darien »

Hm, ich habe folgende Versionen von meinem Hoster vorgegeben:

MySQL 4.0.24_Debian-10
PHP Version 4.3.10-15

Vielleicht liegt es an meinem "ängstlichen" Hoster, der einige PHP Funktionen nicht erlaubt ?
Piratos

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by Piratos »

Das glaube ich nicht.

Hier nun mal (ich hoffe der letzte Versuch) - in dem ich auf meine normalen "Möglichkeiten" pfeife und die Originalabfrage weitgehendst nachgebildet habe.
Die Anzeige ist bei mir identisch mit der News - Ausgabe aus der CMS.

Habe da einen neuen Schalter eingefügt, da manche Newsreader die Summary nicht auswerten und das würde bedeuten - es gehen Informationen flöten:

Code: Select all

<?php
$starttime = microtime();
require_once('config.php');

// Hier anpassen wenn erforderlich
//---------------------------------
// wird nur verwendet, wenn es keine sitreprefs gibt  cmsms version < 13.1
// Sie sollten hier etwas eintragen wenn ältere Version verwendet werden oder wenn in den siteprefs nichts ist

$websitetitel='NoName';
$untertitel='NewsFeed';
// Wenn Sie unbedingt SPAM ohne Ende wünschen, tragen sie hier ihre Mailadresse ein.
$email ='noreply@'.$_SERVER['HTTP_HOST'];

// sind keine durch Komma getrennte angegeben,werden alle verwendet
// auf exakte gleiche Schreibweise achten

$kategorien='1.Mannschaft,AH-Mannschaft,Jugend,Verein,General';

// wenn 1 dann wird die Zusammenfassung zum Inhalt zugeschlagen, da Newsreader wie beim IE 7 die
// die Zusammenfassung nicht auswerten
// ist das NICHT erwünscht den Wert auf 0 setzen
$sum_zu_content=1;

// Ende der Anpassung


$linkteil='?module=News&id=cntnt01&cntnt01action=detail&cntnt01articleid=';
function tstamp($s)
{
if ($s =='') return '';
$t=explode(' ',$s);
$j=explode('-',$t[0]);
$u=explode(':',$t[1]);
$ts= mktime ($u[0],$u[1],$u[2],$j[1],$j[2],$j[0]);
return $ts;
}


$dbhost=$config['db_hostname'];
$dbuser=$config['db_username'];
$dbpasswd=$config['db_password'];
$dbname=$config['db_name'];
$root_url=$config['root_url'];
$feedurl=$root_url.'/atom.php';
$homepage=$root_url;
$table_prefix=$config['db_prefix'];
if (!$config['default_encoding'] == '')
 $encoding=$config['default_encoding'] ;
else
 $encoding =$config['admin_encoding'];
$now=time();
$nownull=$now-1;

if ($kategorien !='')
{
  $kats=explode(",",$kategorien);
}

$ext='';
if ($kats !=null)
{ $c=count($kats);
  $i=0;
  //$ext=" AND  k.news_category_id = n.news_category_id AND (";
  $ext="  AND (";
  foreach($kats as $one)
  {
     $ext .=" k.news_category_name = '$one' ";
     $i++;
     if ($i < $c) $ext .="OR ";
  }
  $ext .=")";
}

$date1 = date('Y-n-j H:i:s',1);
$date2 = date('Y-n-j H:i:s',time());
$sql="SELECT n. * , k.news_category_name
FROM ".$table_prefix."module_news n, ".$table_prefix."module_news_categories k
WHERE k.news_category_id = n.news_category_id
AND STATUS = 'published'".$ext."
AND (
IFNULL( n.start_time, '".$date1."' ) < '".$date2."'
)
AND (
(
IFNULL( n.end_time, '".$date1."' ) = '".$date1."'
)
OR (
n.end_time > '".$date2."'
)
)";

$db = mysql_connect($dbhost,$dbuser,$dbpasswd) or die("Keine Verbindung zum Datenbanksystem gelungen: " . mysql_error());
mysql_select_db($dbname) or die("Auswahl der Datenbank".$dbname." fehlgeschlagen");
//echo $sql;
$result=mysql_query($sql);
$pref=mysql_query("SELECT sitepref_value FROM `".$table_prefix."siteprefs` WHERE  `sitepref_name` = 'sitename'");
if ($pref) {
  $row = mysql_fetch_assoc($pref);
  $titel =$row['sitepref_value'];
  if ($titel=="") $titel=$websitetitel;
}
else
{
  $titel=$websitetitel;
}

// Copyright bitte belassen
$copyright="CMSMS Atom 1.0 by Jan Czarnowski(c)2006";
$out='<?xml version="1.0" encoding="'.$encoding.'"?><feed xmlns="http://www.w3.org/2005/Atom">';
$out .='<title type="text">'.$titel.'</title><subtitle type="text">'.$untertitel.'</subtitle>';
$first=true;
  while ($result && $dbr = mysql_fetch_assoc($result))
  {
    if ($dbr['create_date']==null) $dbr['create_date']= $nownull; else $dbr['create_date']=tstamp($dbr['create_date']);
    if ($dbr['modified_date']==null) $dbr['modified_date']= $now;else $dbr['modified_date']=tstamp($dbr['modified_date']);
    if ($dbr['create_date']== $dbr['modified_date']) $dbr['modified_date']=$dbr['modified_date']+1;
    $d_a=date("Y-m-d H:m:s", $dbr['modified_date']);
    $d_b=date("Y-m-d H:m:s", $dbr['create_date']);
    $d = explode(" ", $d_a);
    $date = $d[0];
    $time = $d[1];
    $datetime = implode("T",$d);
    $d2 = explode(" ", $d_b);
    $date2 = $d2[0];
    $time2 = $d2[1];
    $datetime2 = implode("T",$d2);
    if ($first)
    {
      $first=false;
      $out .="<updated>".$datetime."Z</updated>";
      $out .="<id>$feedurl</id>";
	  $out .='<link rel="alternate" type="text/html" href="'.$homepage.'"/>';
	  $out .='<link rel="self" type="application/atom+xml" href="'.$feedurl.'"/>';
	  $out .='<rights>'.$copyright.'</rights>';
	  $out .='<generator uri="'.$feedurl.'" version="1.0">'.$copyright.'</generator>';
    }

    $pid=$dbr['news_id'];
    $betr=trim($dbr['news_title']);
    if (strlen($betr) == 0) $titel1 = 'Kein Titel'; else $titel1= $betr;
    $out .='<entry><title type="text">'.$titel1.'</title>';
    $out .='<link type="text/html" href="'.$root_url.'/index.php'.$linkteil.$pid.'"/>';
    $out .='<id>'.$root_url.'/index.php'.$linkteil.$pid.'</id>';
    $out .='<published>'.$datetime2.'Z</published>';
    $out .='<updated>'.$datetime.'Z</updated>';
    $out .='<author><name>'.htmlspecialchars($titel).'</name><uri>'.$homepage.'</uri> <email>'.$email.'</email>	</author>';
    if ($sum_zu_content==1) $neu=$dbr['summary'].'<br />'.$dbr['news_data'];else$neu=$dbr['news_data'];
    if (strlen($dbr['summary'])==0) $kurz = substr($neu,0,90).' ....';else $kurz=$dbr['summary'];
    $out .='<summary type="html">'.htmlspecialchars($kurz).'</summary>';
    $out  .= '<content type="html" xml:lang="de">'.htmlspecialchars($neu).'</content></entry>';

}
$out .="</feed>";
$endtime = microtime();
list($a_dec, $a_sec) = explode(" ", $starttime);
list($b_dec, $b_sec) = explode(" ", $endtime);
$verbrauch = $b_sec - $a_sec + $b_dec - $a_dec;
$out .="<!--CMSMS Atom-Feed needs  $verbrauch Seconds  and ".(function_exists('memory_get_usage')?memory_get_usage():'n/a')." Bytes of Memory RAM --><!-- CMSMS ATOM Version 1.0 (c) Jan Czarnowski - http://piratos.byethost33.com -->";
header("Content-Type: application/xml");
echo $out;
?>

Darien

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by Darien »

Genial !
Jetzt funktionierts --> Link zum Feed

Danke.
ochsner

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by ochsner »

Sorry, hatte bis jetzt keine Zeit zum testen. Folgende Probleme habe ich mit dem Script:

1. Es zeigt mir alle News an - es würden mir deren 8 reichen.
2. Im Google Reader wie auch im Firefox erhalte ich die ältesten News als erstes (sollte aber besser umgekehrt sein....) - im IE7 zeigt es aber interessanterweise die Neuesten zuerst an.

Hier der Link: www.bea-heim.ch/feed.php
Piratos

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by Piratos »

Es zeigt mir alle News an - es würden mir deren 8 reichen
Die Funktion aller aktuellen Newsreader sind so, dass wenn ein Feed abbonniert wurde nur die dann fehlenden neu abgeholt werden.

In der Regel sollte man gerade bei News ein Enddatum setzen - die Regelung nach Menge kann man ja machen, aber das ist logsch die denkbar schlechteste.
im IE7 zeigt es aber interessanterweise die Neuesten
Und andere auch, der IE ist da eben in dieser Sache besser dran, weil neu erstellt.
Bei FF 2.0 , die da kommen wird, ist das übrigens genau so.


Du kannst ja der SQL ein ORDER BY news_date DESC  LIMIT 0,8 anhängen.

Mysql würde dann eine Sortierung vornehmen.

Wenn du keine Ablaufzeit setzt und in 5 Jahren 10.000  News hast (ich übertreibe mal) dann würde die Sortierung auf 10.000 Datensätze laufen um die 8 ersten anzuzeigen.

Hast du eine Ablaufzeit gesetzt würden nur die betreffende Anzahl X in die Sortierung gelangen.

Also die besten News sind immer die mit Ablaufzeit.
Last edited by Piratos on Sat Apr 29, 2006 7:03 am, edited 1 time in total.
Nogga

Re: Separates Feed Script für News auf Basis Atom Version 1

Post by Nogga »

Achtung - die ORDER BY-Geschwindigkeit nimmt mit der Zunahme von Datensätzen sicherlich um den exponentiellen Wert zu!

Hatten wir in der Datenbank-Vorlesung ausprobiert.

Query ohne Order By (über knapp 800k Datensätze) irgendwo um 2-4 Sekunden. Mit Order By um die 50-60 Sekunden...

Aber für News sollte es trotzdem allemal reichen ;)
Post Reply

Return to “Module und Tags”