位置: 编程技术 - 正文

PHP读取大文件的多种方法介绍(php读取文件的一部分)

编辑:rootadmin

推荐整理分享PHP读取大文件的多种方法介绍(php读取文件的一部分),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php读取php文件内容,php 读取大文件,php 读取大excel,php 读取大文件,php读取文件的函数是什么,php读取大文件的内容,php读取文件的函数,php读取大文件的内容,内容如对您有帮助,希望把文章链接给更多的朋友!

读取大文件一直是一个头痛的问题,我们像使用php开发读取小文件可以直接使用各种函数实现,但一到大文章就会发现常用的方法是无法正常使用或时间太长太卡了,下面我们就一起来看看关于php读取大文件问题解决办法,希望例子能帮助到各位。

在PHP中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file、file_get_contents之类的函数,简简单单的几行代码就能 很漂亮的完成我们所需要的功能。但当所操作的文件是一个比较大的文件时,这些函数可能就显的力不从心, 下面将从一个需求入手来说明对于读取大文件时,常用的操作方法。

需求:有一个M的日志文件,大约有多万行, 用PHP返回最后几行的内容。

实现方法:

1. 直接采用file函数来操作  由于 file函数是一次性将所有内容读入内存,而PHP为了防止一些写的比较糟糕的程序占用太多的内存而导致系统内存不足,使服务器出现宕机,所以默认情况下限制只能最大使用内存M,这是通过php.ini里的 memory_limit = M 来进行设置,这个值如果设置-1,则内存使用量不受限制。

下面是一段用file来取出这具文件最后一行的代码:

  整个代码执行完成耗时 . (s)。  我机器是2个G的内存,当按下F5运行时,系统直接变灰,差不多分钟后才恢复过来,可见将这么大的文件全部直接读入内存,后果是多少严重,所以不在万 不得以,memory_limit这东西不能调得太高,否则只有打电话给机房,让reset机器了。

PHP读取大文件的多种方法介绍(php读取文件的一部分)

2.直接调用Linux的 tail 命令来显示最 后几行  在Linux命令行下,可以直接使用 tail -n access.log 很轻易的显示日志文件最后几行,可以直接用PHP来调用tail命令,执行PHP代码如下:

  整个代码执行完成耗时 0. (s)

3. 直接使用PHP的 fseek 来进行文件操作  这种方式是最为普遍的方式,它不需要将文件的内容全部读入内容,而是直接通过指针来操作,所以效率是相当高效的。在使用fseek来对文件进行操作时,也有多种不同的方法,效率可能也是略有差别的,下面是常用的两种方法:

方法一  首先通过fseek找到文件的最后一位EOF,然后找最后一行的起始位置,取这一行的数据,再找次一行的起始位置, 再取这一行的位置,依次类推,直到找到了$num行。实现代码如下

  整个代码执行完成耗时 0. (s)

方法二  还是采用fseek的方式从文件最后开始读,但这时不是一位一位的读,而是一块一块的读,每读一块数据时,就将读取后的数据放在一个buf里,然后通过换 行符(\n)的个数来判断是否已经读完最后$num行数据。实现代码如下

整个代码执行完成耗时 0.(s)。

方法三

整个代码执行完成耗时 0.(s)

方法四,PHP的stream_get_line函数 ,读取快速,读取万条数据大文件,大概需要秒左右的时间!例子代码如下

标签: php读取文件的一部分

本文链接地址:https://www.jiuchutong.com/biancheng/293350.html 转载请保留说明!

上一篇:PHP如何将XML转成数组(php xml转数组)

下一篇:PHP中file_exists使用中遇到的问题小结(php的file函数)

  • 车辆购置税会计核算
  • 增值税价外税是什么税种
  • 支出算什么会计科目
  • 代收的电费计入什么费用
  • 个人所得税扣缴申报表
  • 工资表领导签字怎么签
  • 购入汽车的增值税可以抵扣差额开具的销项吗
  • 增值税进项抵扣怎么做账
  • 利润表本期金额怎么算
  • 如何查发票是否被红冲
  • 经营租入的固定资产是资产吗
  • 房屋建筑物折旧率计算
  • 收到货款开的增值税发票怎么写分录
  • 非货币性资产交换损益计算
  • 超过一年的保证金怎么交个税
  • 专票信息内容
  • 软件的维修性要求
  • 定额发票上的金额是什么
  • 啤酒消费税的计税基础
  • 增值税需要计提吗
  • 企业如何增加净资产
  • 零申报资产总额填注册资本怎么办呢
  • 在途物资期末借方
  • 投资管理公司收费
  • 员工福利没有发票
  • 折旧是属于公司成本吗
  • 预收销货款属于负债吗
  • 代发工资开的发票可以抵扣吗?
  • php多维数组转一维数组
  • PHP:mb_convert_variables()的用法_mbstring函数
  • 有销项无进项税务局会怎么罚
  • 接受捐赠会计准则
  • anaconda更改虚拟环境路径
  • 固定资产折旧企业所得税税前扣除标准
  • 怎么让gridview居中
  • 小规模纳税人记账需要哪些账本
  • 盘盈的存货计入哪个科目
  • php示例代码
  • 过来人告诉你:女人最珍贵的三种东西,舍得给你说明爱你
  • php会员到期功能
  • 银行发行债券流程图
  • 研发失败能做加工企业吗
  • 红字发票开错可以重开吗
  • 规模以上企业纳税要求
  • 销售公司提成表模板
  • 破产清算不够支付员工补偿金
  • 保税仓发货的商品退货要承担税吗
  • 计提折旧的固定资产全年平均总值怎么算
  • 企业所得税年报申报时间
  • 应收账款是指什么
  • 手机开个人劳务票怎么开
  • 疫情防控期间临时性工作补助申请
  • 营改增有什么好处
  • 从货款中扣除罚款的分录怎么写
  • 根据银行回单做凭证
  • 企业出售投资性房地产应按照售价与账面价值
  • 携税宝费用可以抵扣增值税吗
  • 会计总账怎么做账
  • 建筑企业人工费计入什么科目
  • Linux下mysql源码安装笔记
  • Windows Server 2003系统进程中NETWORK SERVICE相关知识详解
  • 虚拟机中安装虚拟机
  • mac系统怎么打开任务管理器
  • 通过修改注册表修改edge主页
  • linux系统怎么添加文件
  • apache 443
  • win7系统运行慢,如何提速
  • os x 10.10 yosemite自动纠正怎么关?os x yosemite自动纠正功能关闭教程
  • win7桌面右下角输入法图标不见了
  • win10 edge浏览器设置信任站点
  • 在linux操作系统中,/etc/rc.d/init.d
  • win7磁盘管理怎么显示隐藏分区
  • linux常用的帮助命令
  • css如何用
  • 举例说明json数据格式的语法
  • javascript编写程序
  • jquery的插件
  • 吉林网上报税网址
  • 买车险代收车船税合法吗
  • 实名办税有什么作用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设