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

建站经验
评价网站推广的效果的方法
中国流量巨大的10种类型的商业网站
轻松快速打造PR5的网站
新手需要了解的网站建设的过程和步骤
推广个人博客最好办法 免费书签收藏代码
能坚持下来的站长让痛苦来的更猛烈些吧
博客首页该如何布局才能吸引与留住人
用户需求网站目标涉及行业盈利模式决定你做什么
建站流程应该是边修改边上线 推荐
建站经验谈 豆瓣网怎么推广的
GOOGLE在中国市场落后的5点原因分析
地方分类信息网站的有效推广方法小结
跟Alexa类似的网站流量跟踪的5个国外网站
网站建设与SEO的流程图
关于解决网站内容复制几点建议 强烈推荐
开心网转帖功能 网站推广经验
Site 网站首页不在第一页的原因及解决方法
解决首页不在第一页的问题的方法参考
网站推广 如何招兼职网络推广员
网站用户体验与公交车的用户体验

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 112 ::
收藏到网摘: 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 次
点击打开新窗口浏览全图