zoukankan      html  css  js  c++  java
  • PHP读取大文件实践

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

     1 function transBigFile($filename){
     2     $redis = new Redis();
     3     $redis -> connect('127.0.0.1',6379,3);
     4     $key = 'tmp:log:20161013';
     5     
     6     if($handler = fopen($filename,'rb')){
     7         while(!feof($handler)){
     8             $curline = fgets($handler);
     9             list($ip,$city_code) = explode(',', $curline);
    10             $ip = substr($ip,0,strpos($ip,'/')); //截取字符串部分字符
    11             usleep(100000);
    12             $redis -> zadd($key,$ip,$city_code);
    13             //$data = array_combine(['ip','city_code'] , [$ip,$city_code] );  //todo练习array_combine。这里这样用效率低下。
    14         }
    15     }
    16     fclose($hander);
    17 }
    18 
    19 set_time_limit(0);  //设置该脚本永不超时
    20 $filename = 'big.csv';
    21 transBigFile($filename);
  • 相关阅读:
    实现翻页效果
    使用AHKActionSheet
    [翻译] GSProgressView
    [翻译] NSRegexTester
    下载时获取文件大小
    高级mask应用
    使用UILabel实现滚动字幕移动效果
    动画绘制水波纹
    能产生粒子效果的CAEmitterLayer
    使用UITableView实现图片视差效果
  • 原文地址:https://www.cnblogs.com/roverliang/p/5956592.html
Copyright © 2011-2022 走看看