加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP爬虫:百万级别知乎用户数据爬取与分析

发布时间:2016-10-01 12:00:06 所属栏目:PHP教程 来源:站长网
导读:副标题#e# 这次抓取了110万的用户数据,数据分析结果如下: 498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="503" height="233" alt="" src="http://www.aspzz.cn/uploads/allimg/160130/1G554Hc_0.jpg" /> 开发前的准备 安装Li

解决方法: >程序不能完全保证在fork进程之前,父进程不会创建redis连接实例。因此,要解决这个问题只能靠子进程本身了。试想一下,如果在子进程中获 取的实例只与当前进程相关,那么这个问题就不存在了。于是解决方案就是稍微改造一下redis类实例化的静态方式,与当前进程ID绑定起来。

改造后的代码如下:

  1. <php 
  2.      public static function getInstance() { 
  3.           static $instances = array(); 
  4.           $key = getmypid();//获取当前进程ID 
  5.           if ($empty($instances[$key])) { 
  6.                $inctances[$key] = new self(); 
  7.           } 
  8.  
  9.           return $instances[$key]; 
  10.      } 

PHP统计脚本执行时间

因为想知道每个进程花费的时间是多少,因此写个函数统计脚本执行时间:

  1. function microtime_float() 
  2.      list($u_sec, $sec) = explode(' ', microtime()); 
  3.      return (floatval($u_sec) + floatval($sec)); 
  4.  
  5. $start_time = microtime_float(); 
  6.  
  7. //do something 
  8. usleep(100); 
  9.  
  10. $end_time = microtime_float(); 
  11. $total_time = $end_time - $start_time; 
  12.  
  13. $time_cost = sprintf("%.10f", $total_time); 
  14.  
  15. echo "program cost total " . $time_cost . "sn"; 

若文中有不正确的地方,望各位指出以便改正。

代码托管地址:https://github.com/HectorHu/zhihuSpider

 

 

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读