天空小小岛技术网站

标题: 解决 Snoopy.class.php 模拟请求时很慢的问题 [打印本页]

作者: 一粒米    时间: 2012-4-17 14:04
标题: 解决 Snoopy.class.php 模拟请求时很慢的问题
Snoopy.class.php 是一个 php 的类,用来模仿 web 浏览器的功能,它能完成获取网页内容和发送表单的任务。
官方网站 http://snoopy.sourceforge.net/
最新版本:1.2.4


一哥们使用 Snoopy.class.php 抓取普通门户网站首页时,居然耗时二十多秒,问我怎么回事儿。

采用单点取时,发现
  1. do {
  2.                     $_data = fread($fp, $this->maxlength);
  3.                     if (strlen($_data) == 0) {
  4.                         break;
  5.                     }
  6.                     $results .= $_data;
  7.                 } while(true);
复制代码
这段代码前后耗时就二十多秒。
循环中间插入取时,发现最后一次时间最长。
于是想,循环中每次耗时都比较短,为啥单单最后一次那么长时间呢?
难道是无法判断到文件结束自然超时?

于是做了以下调整:
找到第836行,上下的代码是
  1. //add proxy auth headers
  2.                 if(!empty($this->proxy_user))       
  3.                         $headers .= 'Proxy-Authorization: ' . 'Basic ' . base64_encode($this->proxy_user . ':' . $this->proxy_pass)."\r\n";


  4.                 $headers .= "\r\n";
复制代码
  1. $headers .= "\r\n";
复制代码
上面增加

  1.                 // Arice start
  2.                 if($http_method != $this->_submit_method) {
  3.                         $headers .= "Connection: Close\r\n";
  4.                 }
  5.                 // Arice end
复制代码
注意
  1. $headers .= "\r\n";
复制代码
这个有好几处,只有一处是结尾的。

经过这样修改后,抓取时间一下子变成 0.4 秒

作者: 匿名    时间: 2012-4-17 15:44
牛人

来自 范圣帅 的腾讯微博
作者: 匿名    时间: 2012-4-17 15:44
保存一下先,有用 || @shengshuai: 牛人

来自 黎明 的腾讯微博
作者: 匿名    时间: 2012-4-17 15:44
支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 御雪 的腾讯微博
作者: 匿名    时间: 2012-4-17 15:44
必须mark一下 || @max_soft: 支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 胡桔森 的腾讯微博
作者: 匿名    时间: 2012-4-17 15:44
收藏了 || @zoewho: 必须mark一下 || @max_soft: 支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 猫小乐 的腾讯微博
作者: 匿名    时间: 2012-4-17 15:44
|| @politebogle: 收藏了 || @zoewho: 必须mark一下 || @max_soft: 支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 临平百合新娘小涛 的腾讯微博
作者: 匿名    时间: 2012-4-17 15:44
|| @politebogle: 收藏了 || @zoewho: 必须mark一下 || @max_soft: 支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 WEI 的腾讯微博
作者: 匿名    时间: 2012-4-17 17:01
|| @max_soft: 支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 张建勇 的腾讯微博
作者: 匿名    时间: 2012-4-17 17:56
||@politebogle: 收藏了 || @zoewho: 必须mark一下 || @max_soft: 支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 陈杰 的腾讯微博




欢迎光临 天空小小岛技术网站 (http://tkxxd.net/) Powered by Discuz! X3.1