## 使用PHP分析超大的日志文件 如何使用php读取超过10G的文件,这个是今年四月份去一家公司面试时,面试官出的一道题目。因为工作经验不足,所以答的不好,当时也说了使用文件指针逐行读取,只是不知道使用什么函数。后来的几个月工作中,心中一直存在着这个问题,好在工作中没有碰到这样的应用场景。为了避免遗忘,还是把解决方案写出来,以备实际应用。

 function transBigFile($filename){
$redis = new Redis();
$redis -> connect('127.0.0.1',6379,3);
$key = 'tmp:log:20161013'; if($handler = fopen($filename,'rb')){
while(!feof($handler)){
$curline = fgets($handler);
list($ip,$city_code) = explode(',', $curline);
$ip = substr($ip,0,strpos($ip,'/')); //截取字符串部分字符
usleep(100000);
$redis -> zadd($key,$ip,$city_code);
//$data = array_combine(['ip','city_code'] , [$ip,$city_code] ); //todo练习array_combine。这里这样用效率低下。
}
}
fclose($hander);
} set_time_limit(0); //设置该脚本永不超时
$filename = 'big.csv';
transBigFile($filename);

最新文章

  1. IE8/9 JQuery.Ajax 上传文件无效
  2. PetaPoco4.0 实体某个字段不赋值会更新成null解决方案
  3. CI连接多个数据库
  4. c++关于析构的那点小事(个人吐槽向
  5. CSS3学习
  6. ASP.NET Web API 特性
  7. Bootstrap2和3的区别
  8. Java 函数参数传递方式详解 分类: Java Game 2014-08-15 06:34 82人阅读 评论(0) 收藏
  9. Qt入门(16)——组装窗口部件
  10. A - FatMouse' Trade
  11. js中推断对象详细类型
  12. 阿里云 镜像 源 debian
  13. 201521123014 《Java程序设计》第4周学习总结
  14. IOS微信分享功能简单实现
  15. [Active Learning] 01 A Brief Introduction to Active Learning 主动学习简介
  16. iptables介绍
  17. A1035. Password
  18. Android build.gradle
  19. S3 对象
  20. STL 算法介绍

热门文章

  1. 用NSCalendar和UICollectionView自定义日历,并实现签到显示
  2. 使用PullToRefresh插件实现ListView下拉刷新(Android Studio)
  3. 第三方开源库和jar包的区别
  4. Android教程收集贴
  5. An App ID with Identifier 'com.XXX.XXX’ is not available. Please enter a different string.报错
  6. html img图片等比例缩放
  7. AEAI WM V1.5.0 升级说明,开源工作管理系统
  8. MySQL 索引
  9. chkconfig
  10. sql语句返回值的问题