位置: 编程技术 - 正文

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)

  • 劳务费发票报销
  • 个人独资企业税种有哪些
  • 固定资产的更新改造支出计入什么科目
  • 预算会计无偿调拨净资产
  • 建筑企业开票都开什么
  • 固定资产折旧准予扣除是什么意思
  • 公积金缴存基数多久调整一次
  • 工业企业成本核算的一般程序包括下列的
  • 什么情况下增值税进项税额要转出
  • 一般纳税人普通发票免税吗
  • 差旅费报销单属于什么凭证?
  • 无法收回的应收账款情况说明
  • 以股权投资入股放高利贷违法吗
  • 小微企业的认定标准2021
  • 实发工资比计提多汇算清缴要怎么处理
  • 品牌使用费的账务处理
  • 分支机构多预缴应该怎么退税呢?
  • 企业安装监控费用怎么做账
  • 滴滴出行客运服务费 事业单位 报销
  • 运费发票没有开 怎么做到成本
  • 收入冲正
  • 直接收款涉及增值税吗
  • 发票上月开本月到账要交企业所得税吗?
  • 0元收购股份
  • 虚开增值税简单例子
  • 甲供材料如何纳税
  • 出租房屋免租期如何确认收入
  • 内账增值税会计核算
  • php -m
  • 税务局返还税款账务处理
  • 存出投资款要计入现金流吗
  • deepin下载教程
  • 外汇账户转账有手续费吗
  • php str函数
  • php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
  • 认缴制注册资金不交可以吗
  • reactjs路由跳转
  • php正则表达式匹配字符串
  • vue全局引入js文件
  • jquery还用吗2020
  • vue router-view路由详解
  • flexbuffers
  • discuz去除官方论坛
  • 生产型外资企业
  • 经营性应收项目和经营性应付项目
  • 综合所得个税计算例题
  • 苗木免税只能开普票
  • 收到保险公司退款
  • 股份有限公司个人股份
  • 个税赡养老人分摊方式怎么更改
  • 待认证进项税额认证以后怎么做分录
  • 应交税费余额是什么意思
  • 预留印鉴章是什么章
  • 利息收入红字如何入账
  • 待抵扣进项税额和待认证进项税额的区别
  • 应付职工薪酬工作流程
  • 预付账款的账务处理过程
  • 亏损股东现金补偿怎么算
  • 企业转让固定资产企业所得税
  • 个人社保缴纳会不会自动扣款
  • 外账会计做什么
  • 其他资本公积核算哪些内容
  • 什么是个人独资企业营业执照
  • sql server in()
  • winxp显示设置
  • win8应用商店无法连接网络
  • 2016年微软股价
  • win8无法更新到win10
  • jQuery插件下载
  • jqueryfind
  • node.js net模块
  • csh,tcsh,bash,sh等shell的区别
  • vue怎样使用
  • jqueryui dialog
  • 请问木瓜
  • 让你略表情包
  • 天河地税局局长简介
  • 电脑多窗口同步操作
  • 国家税务总局网站官网浙江
  • 小微企业印花税减免政策2024
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设