位置: 编程技术 - 正文

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)

  • 已认证进项税额转出会计分录账务处理
  • 如何理解递延所得税资产和递延所得税负债
  • 小规模纳税人应纳增值税额的计算
  • 怎么添加临时办社保卡
  • 已交税金是什么类
  • 税控系统维护费怎么做会计分录
  • 购买方已抵扣怎么作废
  • 抵扣联的抵扣期限
  • 非工作日是否可以开标
  • 科目余额表一定要编吗
  • 股权增值转让的财税处理
  • 企业所得税的应纳税所得额的扣除项目有哪些
  • 收到供应商赔偿的违约金
  • 银行质押贷款会查征信吗
  • 无实收资本能日本投资吗
  • 物流分公司怎么运作
  • 营改增通知规定的税收优惠政策
  • 金税盘?
  • 工会是否具有有法律效力
  • 小规模纳税申报表
  • 特殊性税务处理和一般性税务处理的区别
  • 开通分期付款
  • 辅导期纳税人预缴增值税
  • 购买办公用品未取得发票怎么办
  • 专票入库单金额怎么算
  • 特种设备年检费怎么开具发票
  • 华为鸿蒙harmony os
  • 铡什么意思
  • 如何设置电脑从硬盘启动
  • exe都打不开
  • 房贷每月利息如何算
  • mongodb4.0安装教程
  • 备用金需要发票吗?收据可以报销吗
  • 资金平衡表的编制方法
  • 真实世界人工智能
  • php实现微信支付功能
  • vget命令
  • 办公费用会计科目怎么写
  • 旅游费用叫什么
  • 固定资产清理是什么意思
  • 增值税普通发票查询真伪
  • 办公费用开专票可以抵扣吗
  • T-SQL语句修改数据表属性
  • 购买方已抵扣怎么做分录
  • 递延收益的摊销时点
  • 买一赠一是什么促销方式
  • 增值税期末留抵退税
  • 咨询费发票能抵扣吗
  • 以前年度的银行流水可以补进来做账嘛
  • 车费多付了,怎么追回
  • 现金日记账怎么记账
  • 承兑汇票怎么贴
  • 小规模开票额度有限制吗
  • 停车费报账
  • 负数发票怎么开具?
  • 要约收购期满
  • 以前年度应收账款无法收回
  • sql语句递归
  • win8怎么看windows
  • 电脑爆音卡死
  • 怎么进入bios设置界面win10
  • winxp系统和win7系统有什么区别
  • linux设置用户的密码
  • centos7.2安装
  • vsftpd教程
  • window10如何校色
  • linux中argv
  • shell自动化
  • unity连接数据库能做什么
  • vue路由router
  • node.js详解
  • 批处理技术有哪些
  • node的express
  • python的应用程序
  • python web网站
  • android 轮播
  • python爬取前程无忧
  • Python判断字符串结尾并输出yes或no
  • 你家预收租金到哪里去了
  • 建筑工程开票要在项目所在地
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设