[Gregarius](http://gregarius.net/)是我现在使用的rss阅读器,其它在线的比如google reader、zhuaxia我网速太慢,使用不顺畅,纯离线方式的吧,比如liferea,在浏览的时候依然要解析html和联网(feed内容中有图像),还是在本机架一个Gregarius,cron定时更新,然后用firefox看方便,保存有价值的文章也更方便。
原先更新都是用wget:
wget --no-check-certificate -O /tmp/gregarius.update https://my_local_machine_name/gregarius/update.php
wget的输出会已本地用户邮件形式被mutt收下来,设定好之后,有一段没时间看rss也没在意,这天忽然发现原来wget只要retry 3、4次就能更新完全部feed,现在需要十几次,而我的feed增长显然没达到这种程度;并且有些网站在Gregarius中看到已经很久没有更新了(-t 1可以指定只retry一次,默认是20次,-t 0为无限制retry下去)。同时在feed管理中看到,很多网站的名字都加上了删除线,比如“[月光博客](http://www.williamlong.info/)”,最后终于发现,这些名字打上了删除线的blog的feed全部托管在feedburner,并且内容全部没有更新,原因,自然是开始于前段时间的feedburner无法访问。
feedburner无法访问我倒不怕,我一直都在本机[用squid、privoxy、tor智能中转web访问请求](294),现在只要让gregarius更新feed时用上我这个本地的代理服务器squid就可以了,看了一下gregarius的代码,远程读取rss使用的是[Snoopy类](http://snoopy.sourceforge.com),本地文件为extlib/Snoopy.class.inc
,调用是在extlib/rss_fetch.inc
文件中,大概第317行,function _fetch_remote_file
部分,在这里添加如下内容即可:
$client->read_timeout = MAGPIE_FETCH_TIME_OUT;
$client->use_gzip = MAGPIE_USE_GZIP;
// 这几行是添加的内容,其它是原文件中的 Modify by Fwolf @ 2007-10-14
// Use proxy localhost:3128 when fetch feed
$client->proxy_host = "localhost";
$client->proxy_port = "3128";
$client->_isproxy = true;
$client->read_timeout = 0; // tor via squid is slow
//
if (is_array($headers) ) {
$client->rawheaders = $headers;
}
就这么简单,$client
的设置参照Snoopy类的定义即可,然后调用不再使用wget,而是直接运行update.php:
cd /local/path/to/gregarius; php -f update.php
这样更新的结果会清晰的输出:
Engadget Simplified Chinese ...
OK (HTTP 200), 3 New Items
玩意儿 ...
OK (304 Not modified), 0 New Items
津津乐道 ...
HTTP Timeout (Local cache), 0 New Items
小众软件 ...
OK (HTTP 200), 0 New Items
如果加上-- --silent
就没有输出了,第一个--
是给截止php接收参数的参数,--silent
才是给update.php用的。
本文针对Gregarius 0.5.5 revision1761。
不错不错。
直到现在我都用 wget: 0 * * * * wget -q -o /dev/null -O /dev/null http://rss.geelake.com/update.php >/dev/null 2>&1
我也有一个站用gregarius。开始觉得很好。后来觉得还是linlina简单方便。所以其他聚合都用lilinan。gregariius本来想换掉了。现在看你也在研究和使用这个,我就保留吧。一定能从你的使用心得中将来收获不少呢。
这个什么意思?看着让人激动啊。能否找时间详细说一下。
给你提一个建议。为什么不把你gregarius站点放在国外呢,那样更新源不就没有问题了么?之后再邮件发给你。
既然你现在有主机了,上面也能cron,可以尝试一下啊。
@jlake 极湖也是你的网站吧?怎么用opera的blog了?程序一般,还无法访问,不过现在好了:
@bxy wget的输出其实没有什么实际意义的,和shell下的输出结果一样,cron会把输出以本地用户邮件形式发给用户,mutt里自然就能看到了,比如下面的内容:
04:05:36 (22.09 MB/s) - `/tmp/gregarius.update' saved [448]
不放主机上不是因为cron占资源,而是因为会被爬虫乱抓(不是所有的都遵守robots.txt),并且会影响别人的网站,原来有网友抱怨我gregarius里的内容在搜索引擎中排在他网站前面(这里,fcicq的留言);另外也没有意义,就我自己用,远程数据备份也不方便。