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

建站经验
GOOGLE在中国市场落后的5点原因
分享英文界面的国外在线客服程序
网站设计应注意的用户体验
高品质的网页设计的实例与技巧:
用户研究:需要全面综合的了解及分析
图示:网站运营过程及内容传播设计
提高博客的页面访问量的十四个方法
解读:读者退订你博客的34个因素
个人网站制作以及博客的建站技巧
网站攻略:教你简单建站的八大要领
SEO技术:规划网站优化之前的四个要点
SEO技巧分析:如何优化网站结构
网站建设中网页布局与颜色运用基本准则
十个经典的网站设计与优化经验
成长接触电脑经历及其网站建设经验
广捷居算不得网址站!
点评一下目前国内各站长类网站发展现状
如果你不知道怎么赚钱,那么先学会怎么省钱
城市困兽的建站历程
成功经验谈:运营Blog的21个具体方法

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


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