php笔记之:有规律大文件的读取与写入的分析


Posted in PHP onApril 26, 2013

这几天在做一个东西.研究PHP读取行数较多的文件(大概上百万行).考虑到效率问题.进行了简单的研究.总结如下

第一条.file()函数的效率问题.

file()函数的效率很底下 如果是有规律的文件.比如每行一条相应数据.那么尽量不要是用file()函数

可以使用file_get_contents()然后用explode切割.这样效率会快三分之一

举个例子:

文件样式如下:

11111\n

22222\n

33333\n

44444\n

55555\n

.....\n

nnnnnnnnnnn\n

如果用file($file)读入的话.耗时很长.

可以用如下方法explode("\n",file_get_contents($file));效率会快很多.

第二条,数组的遍历方式.

数据已经被读入数组了.下面就是遍历了.

我所需要的是确定数组中有无一个值的存在,比如说44444是否在数组中.首先想到的是in_array()

不过实验了下发现效率很低下.于是参考别人的代码想到一个办法.把数组翻转过来.变成所有值都为1.原来的值变成了索引.那么只要我在if里写($arr[索引]==1)去判断.果然效率高出很多.

在数组的遍历过程中.如果数组个头非常大,并且数组中的数据并不是全能用到的话,最好把用来遍历的数组抽出来.这样会提高很多效率.

第三条,数组的存储.

把计算过后的数据保存起来.存在一个文件中.考虑了三种方法.一种是直接写成php文件.一种是serialize,一种是json串.

第一种方式

直接写入文件<?php 连接var_export($var)连接";"连接?>保存成PHP

需要的时候直接require进来.

第二种方式.把变量serialize然后file_put_contents()进入文件.使用的时候unserialize就ok.

第三种方式和第二种类似.只不过写成了json串.

经过测试.发现第二种效率最高.第三种其次.和第二种效率不相上下.第一种最慢.和我预想的差距很大.真是大跌眼镜.

PHP 相关文章推荐
PHP 采集获取指定网址的内容
Jan 05 PHP
PHP操作Memcache实例介绍
Jun 14 PHP
php模拟用户自动在qq空间发表文章的方法
Jan 07 PHP
PHP限制HTML内容中图片必须是本站的方法
Jun 16 PHP
php设置页面超时时间解决方法
Sep 22 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
php session的应用详细介绍
Mar 22 PHP
ThinkPHP下表单令牌错误与解决方法分析
May 20 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 PHP
Yii框架学习笔记之应用组件操作示例
Nov 13 PHP
php笔记之:文章中图片处理的使用
Apr 26 #PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 #PHP
input file获得文件根目录简单实现
Apr 26 #PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
Apr 26 #PHP
php上传apk后自动提取apk包信息的使用(示例下载)
Apr 26 #PHP
关于二级目录拖拽排序的实现(源码示例下载)
Apr 26 #PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
Apr 26 #PHP
You might like
基于mysql的论坛(3)
2006/10/09 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
PDO::inTransaction讲解
2019/01/28 PHP
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
python实现决策树分类
2018/08/30 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
跳槽求职信范文
2014/05/26 职场文书
大学生实训报告总结
2014/11/05 职场文书
2014年转正工作总结
2014/11/08 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
高二数学教学反思
2016/02/18 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS