如今Web编程的门槛变低了,越来越多的人想手写一个博客(例如本博客就是自己写的),因为这样不仅是对自己的一项锻炼。另外,用着自己写的东西,心里还是蛮舒服的
自己写的博客功能上刚开始会很弱的,比如说高扩展性,主题多变性,稳定性,更新升级便捷性等。不过,只要自己慢慢的去完善这些功能。也许哪一天,你的博客可以超越wordpress也不是不可能的。
这些功能中,有一个比较重要的叫做RSS订阅的功能,他被应用在网站信息采集和各种各样的RSS阅读器中。在你的博客中加入RSS的功能,别人就可以很方便的看到你的博客的更新状态。RSS更是和其他系统交互的一种手段。比如,现在的sina微博,QQ邮箱的阅读空间等,你可以绑定你的博客地址,然后sina/QQ的系统会定期查看的你的RSS有没有更新,如果更新了,那么会将你的博客的标题和网址作为一条微博发出来,免去了自己发送的麻烦。

OK,下边我们开始介绍RSS。

RSS 聚合是最常见的 TLA(三字母缩写词)之一。RSS 作为缩写词具有多种含义,但是当前的标准含义是:真正简单的聚合。这是对这一极为常见、极为有用的标准的最新解释。

回想 Internet 早期,一个称为 Pointcast 的软件将数据 推送到用户计算机上的屏幕保护应用程序上,来提供各种新闻更新。最终,浏览器开发商(例如 Netscape 和 Microsoft)创建了类似这种非常流行的服务的东西。Netscape 开发了接受程度最高的变体,此变体后来被发布到 Internet 开发环境中,并最终发展成了现在的 RSS。

RSS 将最近更新的信息分发给许多接收者,非常类似广播系统。如果您拥有大量的用户,那么 RSS 提要就像灯塔一样吸引您的用户回来查看更新。因为 RSS 提供了一种急需的维持用户注意力的方法,所以 RSS 越来越流行并为越来越多的内容提供者所使用就没什么好奇怪了。

RSS实际上就是一种标准 的xml格式的文档输出,任何动态的语言只要输出该种格式的文件就可以被RSS阅读器采集。

RSS的标准格式如下:

<?xml version="1.0"?>
 <rss version="2.0">  <channel>
     <title>Liftoff News</title>
     <link>http://liftoff.msfc.nasa.gov/</link>
     <description>Liftoff to Space Exploration.</description>
     <language>en-us</language>
     <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate>
     <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate>
     <docs>http://blogs.law.harvard.edu/tech/rss</docs>
     <generator>Weblog Editor 2.0</generator>
     <managingEditor>editor@example.com</managingEditor>
     <webMaster>webmaster@example.com</webMaster>
  
     <item>
       <title>Star City</title>
       <link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link>
       <description>How do Americans get ready to work with Russians aboard the
         International Space Station? They take a crash course in culture, language
         and protocol at Russia's Star City.</description>
       <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate>
       <guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid>
     </item>
   </channel>
</rss>
标准格式的介绍一下:
XML 格式的文档的第一个子对象是 <channel></channel>的定义。通道就是提要自身及其相关信息。许多 RSS 提要具有一个通道对象,但是如果您希望使用任意过滤器分离提要,您就可以使用多个通道。通道对象需要 title、link和 description对象。它们定义了提要的基本描述信息。可选对象是:language, copyright、managingEditor, webMaster、pubDate, lastBuildDate、category, generator、docs、cloud、ttl、image、rating、textInput、skipHours和 skipDays,通道能够包含的项目数量不受限制。
ITEM 元素的全部元素都是可选的,然而,至少需要一个标题或描述来验证元素。这些元素是:title、link、description、author、category、comments、enclosure、guide、pubDate和source。
只要是一种动态的语言输出该种格式的文档就可以了。
一个PHP的例子如下:
<?php
     $database =  "nameofthedatabase";
     $dbconnect = mysql_pconnect(localhost, dbuser, dbpassword);
     mysql_select_db($database, $dbconnect);
     $query = "select link, headline, description from `headlines` limit 15";
     $result = mysql_query($query, $dbconnect);
     while ($line = mysql_fetch_assoc($result)){
         $return[] = $line;
     }
     $now = date("D, d M Y H:i:s T");
     $output = "<?xml version=\"1.0\"?>
             <rss version=\"2.0\">
                 <channel>
                     <title>Our Demo RSS</title>
                     <link>http://www.tracypeterson.com/RSS/RSS.php</link>
                     <description>A Test RSS</description>
                     <language>en-us</language>
                     <pubDate>$now</pubDate>
                     <lastBuildDate>$now</lastBuildDate>
                     <docs>http://someurl.com</docs>
                     <managingEditor>you@youremail.com</managingEditor>
                     <webMaster>you@youremail.com</webMaster>";
     foreach ($return as $line)
     {
         $output .= "<item><title>".htmlentities($line['headline'])."</title>
                                 <link>".htmlentities($line['link'])."</link>
                                 <description>".htmlentities(strip_tags($line['description']))."</description>
                             </item>";
     }
     $output .= "</channel></rss>";
     echo $output;
 ?>

配置好数据库,实现类似以上的一种输出,你的博客就具有了RSS功能。