位置: 编程技术 - 正文

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详细安装步骤
  • 已入账未抵扣的发票开红字发票
  • win10系统如何更改工作组
  • 贷款房屋评估费怎么收
  • 代理的认定
  • qr code在线生成二维码
  • framework 4 client profile 不动
  • 蓝桥杯2021出结果
  • 获取企业微信用户身份信息授权失败
  • 最新的目标检测算法2020
  • 人脸口罩检测系统
  • https是如何保证安全的
  • php之间传递数据
  • stat 命令
  • 评价股权转让要交什么税
  • 企税申报表怎么填
  • 织梦cms要钱吗
  • 织梦使用教程
  • 房地产企业开发的已出租的房屋属于投资性房地产吗
  • 资信证明好开吗
  • 辞退福利是短期还是长期
  • 工会经费绩效
  • 房地产开发间接费用和开发费用的区别
  • PostgreSQL教程(十二):角色和权限管理介绍
  • db2比较大小
  • centos 安装方法
  • 以前年度计提的存货跌价准备本年销售了
  • 对公账户发票和普通发票不一样吗
  • 社保下个月扣款
  • 用于企业职工福利有哪些
  • 哪些地方中国没有收复
  • 贴现法付息实际利率
  • 转账错误退款说明
  • 企业间借款利息涉税处理
  • 职工困难补助账务处理
  • 工会经费计提比例是2%还是0.8%
  • 企业建账要求
  • MySQL中实现插入或更新操作(类似Oracle的merge语句)
  • 防止黑客入侵的有效做法
  • Windows Server 2008搭建终端服务器
  • ubuntu怎么开启root
  • centos7.4修改主机名
  • bios密码忘记了要怎么重置
  • 快速解决儿童鼻塞
  • 电脑xp系统如何
  • linux怎么用root运行命令
  • windows7升级到win8
  • win10 mobile 1709
  • win7启动发生异常i/0错误
  • node.js可以写接口吗
  • cocos2dx4.0教程
  • ubuntu sudo apt-get install
  • 自动删除文件脚本bat
  • jquery和dom对象之间怎么转换
  • javascript要怎么学
  • android 全局viewmodel
  • 河北国家税务局发票查询系统
  • 泉州企业医保哪里缴费
  • 国家电子税务局江西省电子税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设