php 循环抓取网页内容(php循环抓取网页内容,数据量不是很大,为什么需要多线程?)

优采云 发布时间: 2021-12-30 15:08

  php 循环抓取网页内容(php循环抓取网页内容,数据量不是很大,为什么需要多线程?)

  php循环抓取网页内容,数据量不是很大,为什么需要多线程?多线程有什么优点?下面就来一一分析每一个理由。

  一、php循环抓取网页内容,数据量不是很大,

  1、首先需要明确的是,php的多线程抓取基于异步io模式,即php整个脚本段只有一个线程在执行,不同的请求会分别建立线程,后续的各种操作都会依次通过线程执行。

  2、如果多线程抓取网页的请求量很大,那么php服务器的处理器就会很多,处理能力也会受到限制,同时后续的服务器的响应也会慢。

  3、多线程抓取网页,对于中小型网站来说,频繁请求导致服务器处理器资源占用过高,整个系统就会进入down机状态,性能必然不理想。

  4、抓取网页时若采用gzip压缩数据,http协议的压缩率取决于压缩率。gzip压缩后取得的数据远远低于未压缩时的数据。可见,未压缩的数据压缩率可高达百分之八十。如果我们将页面压缩到可以通过改变网页存储时间来提高数据压缩率,这样就很有可能导致contenttransferfault无法继续正常响应,那么整个系统就会被锁死无法继续处理服务器的任务。

  5、由于http的请求方式。web服务器必须能够获取并回应第一个到达的请求,而web服务器解析了所有请求的header,还必须将它们转发给对应的路由器,然后才能通过路由器转发给客户端。这样的整个过程可以为cache而省略。但是,这一定会带来一些额外成本。web服务器和cache的成本是非常可观的。但也正是如此,session成为应用最常用的持久化方式,这可以通过sqlite(一个web服务器和http客户端的双向会话)来做到。

  二、php多线程抓取网页内容,数据量不是很大,

  1、一般大型网站在抓取的初期,都会做单线程,后续通过加入web服务器,从而加速对网页内容的解析。

  2、考虑到加入服务器的成本,很多网站都不会采用单线程处理。

  三、多线程抓取网页内容,数据量大,

  1、php程序相对较大,采用多线程和多进程很难使线程之间的切换节省资源。

  2、如果使用多进程,每次请求线程基本上要执行,其内部会有大量的中断机制,这不利于一个网站的用户体验。

  3、对于小型网站,请求线程会阻塞整个系统的其他任务,造成网站长时间或者大量内存占用。

  4、对于大型网站,短时间内会有一次或多次请求,要占用太多的系统资源,使得整个网站长时间宕机。

  五、php多线程抓取网页内容,对于大型网站来说,要想session长期保持状态,

  1、大型网站对于单线程抓取的处理过程来看,其实是非常高效的,

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线