PHP读取大文件实践
2024-10-20 20:44:22
## 使用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);
最新文章
- IE8/9 JQuery.Ajax 上传文件无效
- PetaPoco4.0 实体某个字段不赋值会更新成null解决方案
- CI连接多个数据库
- c++关于析构的那点小事(个人吐槽向
- CSS3学习
- ASP.NET Web API 特性
- Bootstrap2和3的区别
- Java 函数参数传递方式详解 分类: Java Game 2014-08-15 06:34 82人阅读 评论(0) 收藏
- Qt入门(16)——组装窗口部件
- A - FatMouse' Trade
- js中推断对象详细类型
- 阿里云 镜像 源 debian
- 201521123014 《Java程序设计》第4周学习总结
- IOS微信分享功能简单实现
- [Active Learning] 01 A Brief Introduction to Active Learning 主动学习简介
- iptables介绍
- A1035. Password
- Android build.gradle
- S3 对象
- STL 算法介绍
热门文章
- 用NSCalendar和UICollectionView自定义日历,并实现签到显示
- 使用PullToRefresh插件实现ListView下拉刷新(Android Studio)
- 第三方开源库和jar包的区别
- Android教程收集贴
- An App ID with Identifier 'com.XXX.XXX’ is not available. Please enter a different string.报错
- html img图片等比例缩放
- AEAI WM V1.5.0 升级说明,开源工作管理系统
- MySQL 索引
- chkconfig
- sql语句返回值的问题