求一个PHP生成静态页面的思路。

最近在制作一个RSS咨询聚合类的网站。
所有的RSS分析进数据库,并将每一条记录生成静态页面。
每条记录插入时,还需判断记录是否重复(某些RSS源更新速度慢,须避免重复记录)
所有的RSS抓取全部用CRON完成。

求教。一个生成静态页面的思路。
如何根据每篇文章的ID生成静态页面?

我的思路有点窄。
第一:插入数据库同时,生成。(可能需要多次数据库检索,就像前面说的,还要检查记录是否重复,不是每条分析进来的RSS都生成。)
第二:定时设置CRON程序,将生成静态页面后的页面路径UPDATE进每条记录后,每次检索空记录,生成。但是如果数据库日益庞大,这种查询对数据库压力也不小)

大家是不是有好的方法,可以节省资源,又可以不遗漏的每条的生成静态页面?谢谢、

作者: mumubangditu   发布时间: 2011-06-13

每条记录插入时, 需要判断记录是否重复..
那么我认为决策点就在这里, 在这里能够决定是否要生成这个html.

那么, 在这个点上来生成就是一个比较好的时机, 但是, 生成不一定要在此时完成, 把生成html作为一个独立的任务, 交由其他进程来处理.

下面是我理解的一个思路, 高手请拍砖.
思路: 通过任务队列实现静态页面的生成, 对于rss分析进数据库的过程不产生负担.
流程:
(以下流程假设任务队列使用system v的消息队列实现--php的semaphore扩展)
1. RSS分析系统:
  1. 分析RSS
  2. 判断是否重复(决策是否生成html)
  3. 对需要生成html的, msg_send()将生成html需要的相关信息放入队列
2. 开发另外一个静态页面生成程序(可以使用php来做常驻进程, 并发控制可以使用pcntl)
  1. msg_receive()
  2. 收到一个任务之后, 生成html
  3. 1,2两步往复循环.

如果把上面的system v消息队列换成memcacheq或其他独立缓存中间件, 那么就可以把生成静态页面的任务分离到其他物理机器上, 便于扩展.

作者: lgg201   发布时间: 2011-06-14