天空小小岛技术论坛

 找回密码
 注册
搜索
天空小小岛技术网站 门户 查看主题

解决 Snoopy.class.php 模拟请求时很慢的问题

发布者: 一粒米 | 发布时间: 2012-4-17 14:04| 查看数: 16553| 评论数: 9|帖子模式

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 秒

最新评论

hidden
游客 发表于 2012-4-17 15:44:32
hidden
游客 发表于 2012-4-17 15:44:33
保存一下先,有用 || @shengshuai: 牛人

来自 黎明 的腾讯微博
hidden
游客 发表于 2012-4-17 15:44:34
支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 御雪 的腾讯微博
hidden
游客 发表于 2012-4-17 15:44:35
必须mark一下 || @max_soft: 支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 胡桔森 的腾讯微博
hidden
游客 发表于 2012-4-17 15:44:36
收藏了 || @zoewho: 必须mark一下 || @max_soft: 支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 猫小乐 的腾讯微博
hidden
游客 发表于 2012-4-17 15:44:37
|| @politebogle: 收藏了 || @zoewho: 必须mark一下 || @max_soft: 支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 临平百合新娘小涛 的腾讯微博
hidden
游客 发表于 2012-4-17 15:44:38
|| @politebogle: 收藏了 || @zoewho: 必须mark一下 || @max_soft: 支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 WEI 的腾讯微博
hidden
游客 发表于 2012-4-17 17:01:46
|| @max_soft: 支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 张建勇 的腾讯微博
hidden
游客 发表于 2012-4-17 17:56:44
||@politebogle: 收藏了 || @zoewho: 必须mark一下 || @max_soft: 支持一下/强||@huangliming816: 保存一下先,有用 || @shengshuai: 牛人

来自 陈杰 的腾讯微博

浏览过的版块

小黑屋|手机版|Archiver|天空小小岛  |京ICP备2025130156号|

GMT+8, 2026-6-11 03:23 , Processed in 0.100509 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表