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 相关文章推荐
使用数据库保存session的方法
Oct 09 PHP
织梦模板标记简介
Mar 11 PHP
php 缓存函数代码
Aug 27 PHP
Search File Contents PHP 搜索目录文本内容的代码
Feb 21 PHP
PHP下对数组进行排序的函数
Aug 08 PHP
延长phpmyadmin登录时间的方法
Feb 06 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 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
PHP 图片文件上传实现代码
2010/12/29 PHP
PHP中__get()和__set()的用法实例详解
2013/06/04 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
laravel实现按月或天或小时统计mysql数据的方法
2019/10/09 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
numpy自动生成数组详解
2017/12/15 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
Python更新所有已安装包的操作
2020/02/13 Python
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
商务会议邀请函
2014/01/09 职场文书
十八大报告观后感
2014/01/28 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
阅兵口号
2014/06/19 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
教师作风整顿个人剖析材料
2014/10/10 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
docker-compose部署Yapi的方法
2022/04/08 Servers