PHP读取大文件实践
## 使用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);
PHP读取大文件实践的更多相关文章
- 强悍的Python读取大文件的解决方案
		
这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适合读取大文件. 1. read() 接口的问题 f =open(filename, ...
 - PHP如何快速读取大文件
		
在PHP中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file.file_get_contents之类的函数,简简单单的几行代码就能 很漂亮的完成我们所需要的功能.但当所操作的文件是一个比较大的 ...
 - java读取大文件
		
1 多线程 2 java内存映射读取大文件
 - php使用file函数、fseek函数读取大文件效率分析
		
php读取大文件可以使用file函数和fseek函数,但是二者之间效率可能存在差异,本文章向大家介绍php file函数与fseek函数实现大文件读取效率对比分析,需要的朋友可以参考一下. 1. 直接 ...
 - Java多线程读取大文件
		
前言 今天是五一假期第一天,按理应该是快乐玩耍的日子,但是作为一个北漂到京师的开发人员,实在难想出去那玩耍.好玩的地方比较远,近处又感觉没意思.于是乎,闲着写篇文章,总结下昨天写的程序吧. 昨天下午朋 ...
 - PHP读取大文件的几种方法介绍
		
读取大文件一直是一个头痛的问题,我们像使用php开发读取小文件可以直接使用各种函数实现,但一到大文章就会发现常用的方法是无法正常使用或时间太长太卡了,下面我们就一起来看看关于php读取大文件问题解决办 ...
 - Java 读取大文件方法
		
需求:实际开发中读取文本文件的需求还是很多,如读取两个系统之间FTP发送文件,读取后保存到数据库中或日志文件的数据库中保存等. 为了测试首先利用数据库SQL生成大数据文件. 规则是 编号|姓名|手机号 ...
 - Java高效读取大文件
		
1.概述 本教程将演示如何用Java高效地读取大文件.这篇文章是Baeldung (http://www.baeldung.com/) 上“Java——回归基础”系列教程的一部分. 2.在内存中读取 ...
 - Python逐块读取大文件行数的代码 - 为程序员服务
		
Python逐块读取大文件行数的代码 - 为程序员服务 python数文件行数最简单的方法是使用enumerate方法,但是如果文件很大的话,这个方法就有点慢了,我们可以逐块的读取文件的内容,然后按块 ...
 
随机推荐
- swing with transformjs
			
Antecedent Facebook made a HTML5 game long time ago. The opening animation is a piece of software th ...
 - 初窥Javascript单元测试,附带掌握一门新技能的学习方式。
			
之前没感觉要学啥单元测试,项目中测试都是手动测的,但也没觉的啥,但最近看文章和招聘上也多多少少有这方面的需求,于是网上搜索了一下,只找到了一些文章,但介绍的都不是很详细或者说比较复杂,满满的伤,虽然看 ...
 - Javascript前端和JAVA后端对加密库的处理实例
			
前端加密 Javascript的加解密有开源的库,http://www.oschina.net/p/crypto-js/ 如下是具体的使用例子 <!DOCTYPE html> <ht ...
 - 记录下UIButton的图文妙用和子控件的优先显示
			
UIButton的用处特别多,这里只记录下把按钮应用在图文显示的场景,和需要把图片作为按钮的背景图片显示场景: 另外记录下在父控件的子控件优先显示方法(控件置于最前面和置于最后面). 先上效果图: 1 ...
 - linux 环境下运行STS时 出现must be available in order to run STS
			
linux 环境下运行ECLIPSE时 出现 “ A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avai ...
 - 初识java之String与StringBuffer(上)
			
好久没写博客了,一直在纠结后面的路怎么发展?好了不说废话了!!正题开始!! String与StringBuffer类是我们在开发中最常用的,我们现在一起来分析一下这两个类,首先我们先来谈谈String ...
 - 【译】Spring 4 基于TaskScheduler实现定时任务(注解)
			
前言 译文链接:http://websystique.com/spring/spring-job-scheduling-with-scheduled-enablescheduling-annotati ...
 - 父div高度不能根据子div高度自动变化的解决方案
			
<div id="parent"> <div id="content"> </div> </div> 当cont ...
 - 2.lvm动态逻辑卷
			
Lvm动态逻辑卷 一. 基本概念 LVM 把实际的物理磁盘数据映射到一个简单而灵活的虚拟逻辑存储视图上,藉以控制磁盘资源: 也就是重新考虑了管理文件系统和卷的方法,在文件系统管 ...
 - Android使用C++截屏并显示
			
使用android底层自带的截屏源码进行修改后,将截取屏幕的内容再次显示在屏幕上,使屏幕呈现出暂停的效果. android自带的截屏代码在android\JB\frameworks\base\cmds ...