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

建站经验
做好26件事1年运营成功的赚钱网站
百度k站分析
回顾建站经过以及探索网站盈利
6年来建站经验总结
使用英文设计方法设计中文网页的问题
十一种常见的互联网网站盈利模式
网站制作基础教程(1):需要学习的内容
网站制作基础教程(2):网站设计要考虑用户需求
网站制作基础教程(3):WEB标准
网站制作基础教程(4):网页验证
网站制作基础教程(5):万维网联盟(World Wide Web Consortium)
网站制作基础教程(6):Web安全
网站主机教程(1):网站主机简介
网站主机教程(2):网站主机提供商
网站主机教程(3):域名注册
网站主机教程(4):主机性能
网站主机教程(5):主机的电子邮件服务
网站主机教程(6):网站主机的服务器技术
网站主机教程(7):网站主机的数据库技术
网站主机教程(8):网站主机的类型

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


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