位置: 编程技术 - 正文

php使用file函数、fseek函数读取大文件效率对比分析(php file函数)

编辑:rootadmin

推荐整理分享php使用file函数、fseek函数读取大文件效率对比分析(php file函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php_fileinfo作用,php操作文件的常用函数,php中file_put_contents,php中file,php file函数,php file_append,php中file,php__file__,内容如对您有帮助,希望把文章链接给更多的朋友!

php读取大文件可以使用file函数和fseek函数,但是二者之间效率可能存在差异,本文章向大家介绍php file函数与fseek函数实现大文件读取效率对比分析,需要的朋友可以参考一下。

1. 直接采用file函数来操作

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

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

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

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

2.直接使用PHP的 fseek 来进行文件操作

php使用file函数、fseek函数读取大文件效率对比分析(php file函数)

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

方法一

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

实现代码如下

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

方法二

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

实现代码如下

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

方法三

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

标签: php file函数

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

上一篇:php array_slice 取出数组中的一段序列实例

下一篇:php foreach如何跳出两层循环(详解)(php for each)

  • 缴纳个人所得税会计分录怎么写
  • 什么情况下进项税额需要转出
  • 总账一级科目有哪些
  • 个体户注销工商没有收走公章
  • 母子公司的关联交易怎么看
  • 应付账款超过三年未付
  • 其他综合收益何时转投资收益
  • 增值税专用发票几个点
  • 成本会计实训要求
  • 专用凭证和通用凭证的联系和区别
  • 销售票据和发票的区别是什么?
  • 无形资产账面价值和可收回金额孰低摊销吗
  • 净现金流量率计算公式
  • 代扣代缴个人所得税会计分录怎么做
  • 天然气的销售需要什么资质
  • 煤炭企业税收政策
  • 处理固定资产如何开票
  • 增值税进项发票网上勾选平台
  • 项目部临时设施平面图
  • 开发票与实际金额不符属于什么
  • 母公司捐赠给子公司原材料怎么处理
  • 进项留抵退税会计科目
  • 结转出租包装物的成本
  • 税收滞纳金可以税前扣除吗
  • 借主营业务成本贷应付账款
  • 小规模自开专票税率是1%还是3%
  • 企业打给个人的费用如何节省个税
  • 利润表适用执行小企业
  • 对公回单必须在银行开吗
  • 短期融资券是
  • 临时文件夹在哪个位置
  • 清卡处于非征期是什么意思
  • 5000以下的固定资产当月一次性扣除怎么申报
  • 如何部署迫击炮
  • 戴尔电脑设置u盘
  • 公司收入算认缴出资吗
  • 民间非营利组织会计制度及操作实务
  • PHP:Memcached::setOptions()的用法_Memcached类
  • vue如何预加载图片
  • 国有企业融资方案比较
  • 采购周转材料会计分录怎么写
  • 实现会话跟踪的两种方式
  • 合伙企业个人所得税怎么算
  • 企业的固定资产因自然灾害产生的净损失计入
  • 代收代付进项税转出吗
  • 运输发票抵扣进项税额
  • 增值税进项税额加计抵减会计处理
  • 工会经费余额在借方还是贷方
  • 自用房地产转换为成本模式计量的投资性房地产
  • 以前年度是什么意思
  • 未分配利润为负数可以分红吗
  • 补交增值税和滞纳金怎么入账
  • 股东之间股权转让的税务处理
  • 出售无形资产取得的收入计入什么科目
  • 公司购买的商品质量问题能用12315投诉吗
  • 发票以外的其他发票
  • insert into tbl() select * from tb2中加入多个条件
  • centos安装NVIDIA驱动
  • ubuntu 桌面
  • linux自动清理内存软件
  • xp光盘安装教程
  • ubuntu每次开机都会进入grub
  • centos6.5dns配置
  • win8关机立马自动重启
  • win10开机提醒
  • windows10mobile官网
  • 离线安装macos
  • scrfs.exe - scrfs是什么进程 有什么用
  • cocos2dx shader
  • node.js web
  • shell if语句的用法
  • [置顶]津鱼.我爱你
  • python twinter
  • python t()
  • node js require
  • shell脚本输出空格
  • python中tab
  • 中粮副总裁是什么级别
  • 税务申报热线电话
  • 美国海外公司每年利润
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设