求一个客户订阅RSS,定时更新的方法

去圣西罗-为尤文喝彩 2012-01-30 10:27:47
正在制作一个网站,可以提供客户通过关键字搜索订阅本地的RSS,但是为了保护数据库的调用量,准备限制客户的调用次数。

大致思路是:用户第一次订阅是,调用数据库,生成静态XML文件。根据XML生成时间为基准,每24小时自动更新一次。

思路一:用户每次请求XML时,根据 time()-filectime 判断,如果大于 24*60*60 时,再次运行PHP文件,调用数据库,更新XML文件。问题是,既然已经生成了静态的XML文件,如何让XML通知PHP文件,告诉它:“我已经过期了,请再次更新我吧”?

思路二:把用户订阅写进SHELL里,让CRON定时后台运行。问题是:当用户订阅数成倍增长后,SHELL脚本体积不断增大,会变的繁重。另外,如果SHELL脚本在同一时间有读出和写入,SHELL脚本会不会崩溃?或者导致CRON程序被跳过?

思路三:还没想好,或许大家有更好的方法对我建议。谢谢。


BTW: 个人倾向:根据 time()-filectime 判断,这样可以排除恶意用户在第一次订阅后人间蒸发(RSS订阅被摒弃),而我的CRON程序还在为他每24小时自动的空生成一次……
...全文
180 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
OK, 谢谢大家。结贴。
  • 打赏
  • 举报
回复
嘿,考虑了一下,可不可以这样?所有的RSS订阅定义到一个PHP文件 rss.php?search=abcd


$file_name = $_GET['search'].'.xml'; //abcd.xml
if(time()-filectime($file_name)>24*60*60){
//查询数据库,生成新的xml文件,然后被读取
}else{
//直接被读取,用 file_get_contents($file_name) 还是 include($file_name) 比较好?
}


好像行的通,帮忙再看看有什么漏洞?abcd可以用MD5之类的加密,防止暴力破解。

这个程序最主要的目的是:活的查询结果订阅。但又要限制数据库每天的查询量,做到生成的静态文件超过24小时后,客户端再次查询静态文件时,自动更新一次。

pzhuyy 2012-02-01
  • 打赏
  • 举报
回复
xml的修改时间可以使用head方法取得last modify时间,搜索引擎蜘蛛都是这样做的。
helloyou0 2012-02-01
  • 打赏
  • 举报
回复
1楼就这个意思
就是个文件缓存

abcd可以md5一下,可以防止一些特殊字符造成的麻烦,
暴力破解不是问题,因为你可以把xml放在web root外的目录, 也可以用.htaccess来控制直接访问

xml文件太多了也会有问题,根据需要到时候可以定期删除长期不更新的文件,或者分目录层次.

另: 如果是纯xml文件, file_get_contents比include快


[Quote=引用 3 楼 changjay 的回复:]

嘿,考虑了一下,可不可以这样?所有的RSS订阅定义到一个PHP文件 rss.php?search=abcd

PHP code

$file_name = $_GET['search'].'.xml'; //abcd.xml
if(time()-filectime($file_name)>24*60*60){
//查询数据库,生成新的xml文件,然后被读取
}else{
……
[/Quote]
happypiggy2010 2012-02-01
  • 打赏
  • 举报
回复
没有做过相关的。帮楼主顶一顶。
黄袍披身 2012-01-30
  • 打赏
  • 举报
回复
php 可以读取xml的生成时间进行判断。不过如果有大量xml文件的时候得考虑IO瓶颈的问题。 所以如果不行的话就将生成的时间入库。用数据库来配合工作,可能会好点

xml很多吗?不多的话可以用memcache 来配合一下
  • 打赏
  • 举报
回复
xml文件不会一下子很多,但是日积月累,有上W的可能。

可以考虑把生成时间入库。但是不适合memcache。比如XML文件上万的话,需要多少内存去缓存?(24小时不能清空)

另外,如果时间入库的话,怎么调配?比如用户订阅我这边的RSS到他的网站,如果他不地道,不把订阅的RSS缓存入他的库,而实行现调。也就是他的网站有一个IP上网,等同于调我这里的一次XML文件。还是前面的那个问题:

如何让XML通知PHP文件,告诉它:“我已经过期了,请再次更新我吧”?(查询数据库也需要PHP去执行的吧?)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧