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

建站经验
网页设计时应注意网站版权声明的写法
论坛社区网快速发展的关键
地方门户网站的建设要以注重网站质量为关键
如何突破个人网站成长的瓶颈
做好校园BBS的运行和发展
网站被黑客入侵后怎么办呢?
建设外贸网站要专业地体现自己
新网站排名好 只因功夫不负有心人
怎样让网站成为你的摇钱树?
老站长讲述建站中一些好的解决方案
选择CMS五大误区误区以及CMS点评
揭开建站价格差距甚大的黑幕
三个最新方案解决优酷视频全屏及去广告
网站的微格式
粗制滥造的建站模板是企业电子商务的毒瘤
刚上线的新站最忌讳的四大错误
从子主题开始轻松地修改Wordpress风格
网站建设的价格原则:教你如何选择网络服务商
卢松松:写博客别偷懒,原创才是王道
Dede V5.3已做修改 TAG标签支持空格分隔

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


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