当前位置: 首页 > 图文教程 > 网站运营 > 建站经验 > php实现高效采集(总分模式)

建站经验
改进电子商务类网站易用性的十个有效方法
新建网站 如何让网站原创内容来源多元化
UCH中好友数目的设置建议 如何留住用户
刘韧为SNS鼓与呼 总有一项适合你做的事情
快速有效进行推广新建网站的二十六个途径
学习十九楼模式用论坛程序打造门户样式站
多媒体化是互联网的发展趋势
教你怎样快速提高网站流量?
网站的诞生前和诞生后 我们应该做些什么
网站主题就象一架马车 如何对其四轮定位
模型结构分析 社区网站运营的结构与关系
致中小站长:像自己的孩子样运营一个网站
教不会英文的朋友快速提交alexa信息
谈谈做网站的心态
回顾我的艰辛网络生涯
社区运营的经验分享 吸引用户仅是第一步
关键字选取技巧分析 自己创造一个关键词
如何选择免费虚拟主机及其五点注意事项
五大类二十五个改善网站提高浏览量的方法
知己知彼 分析竞争对手的网站来赢得胜利

建站经验 中的 php实现高效采集(总分模式)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 127 ::
收藏到网摘: n/a

网页自动抓取和采集的效率和速度一直是个瓶颈,查看dedecms和phpcms的采集代码并测试发现不如人意。

dedecms的还算稳定,但是速度不高,它采用的方式是总分模式,在分任务执行时是顺序模式,即,总控开关接受任务并安排执行段给接收分任务的代码块,然后代码块是连续式执行交给的代码,执行完一个任务后,跳转到下一个任务继续执行,这样的好处是总体可控,但是没有有效利用资源,没有采用并发采集,无疑对用户来说是一种时间的浪费和一定程度的失望。

phpcms2008新的采集模块,虽然华丽,模拟的是框架+js式的多线程,理论上效率高,但是经测试发现很令人失望,编码问题很明显,并且设计有点不合理,且不说时效,连完成任务都是问题。

其他的cms就不说了,没做测试。于是自己想开发一套可行性和实效较高的采集系统,经过一下午的时间,核心代码写好了,可以并发采集网页内容,效率还算可以,下面介绍下设计的模式:

同样考虑到php超时的问题,于是任务分块是必须的,为了便于把控,采用总分模式分配任务,分配后,执行模块接受任务后,并发执行任务,各管各的,基本不受相邻任务的影响,但是发现,当任务量大时,每个任务消耗的时间将增大一定,不过总体下来,效率还是蛮高的。

总控开关整理好任务后,将任务放置任务区,然后陆续下达任务书,激活执行代码,代码开始工作,完成自己的任务退出。分配任务的速度还是很快的,采用无返回数据的方式,即激活任务即可。至于如何控制任务完成的时间,还要归结到总控,即总控检测任务的完成与否,回数据到浏览器,通知用户。

测试环境:Windows XP/ Apache/2.2.9 (Win32) PHP/5.2.6

采集网站:新浪新闻

采集数据量:600条

耗时: 2分左右

操作:获取网页内容并获取文章内容部分并写入html文件

下面是测试图片:

总控分配任务:

大小: 10.35 K
尺寸: 320 x 211
浏览: 1 次
点击打开新窗口浏览全图

生成的结果文件:(通过文件名可以看出是并发采集的)

大小: 49.1 K
尺寸: 500 x 146
浏览: 1 次
点击打开新窗口浏览全图

个任务完成后通知文件:

大小: 34.89 K
尺寸: 500 x 144
浏览: 0 次
点击打开新窗口浏览全图