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

方法一:

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

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

function tail($fp,$n,$base=5)

{

assert($n>0);

$pos = $n+1;

$lines = array();

while(count($lines)< =$n){

try{

fseek($fp,-$pos,SEEK_END);

} catch (Exception $e){

fseek(0);

break;

}

$pos *= $base;

while(!feof($fp)){

array_unshift($lines,fgets($fp));

}

}

return array_slice($lines,0,$n);

}

var_dump(tail(fopen("access.log","r+"),10));

方法二 :

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

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

$fp = fopen($file, "r");

$line = 10;

$pos = -2;

$t = " ";

$data = "";

while ($line > 0) {

while ($t != "n") {

fseek($fp, $pos, SEEK_END);

$t = fgetc($fp);

$pos --;

}

$t = " ";

$data .= fgets($fp);

$line --;

}

fclose ($fp);

echo $data

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

php fseek函数,php fseek函数读取大文件两种方法相关推荐

  1. c语言中fact函数怎么调用,C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现...

    点击查看C语言程序题: 1.编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现具体信息 答:int fac(int n) //非递归{int f=1; for(;n;) ...

  2. C#使用FileStream循环读取大文件数据的方法-示例代码

    C#使用FileStream循环读取大文件数据的方法 循环读取大文件数据 using System.IO; class Program {//循环读取大文本文件static void Main(str ...

  3. python使用方法视频-Python读取视频的两种方法(imageio和cv2)

    用python读取视频有两种主要方法,大家可依据自己的需求进行使用. 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用. import pylab impo ...

  4. while和for循环读取大文件三种读取文件方式

    目录 While和for循环 读写文件 三种读操作比较 read()读文件 readline()读文件 readlines()读文件 While和for循环 for循环实现猜三次年纪 age = 66 ...

  5. bufferedreader读取中文乱码_Python读取excel的两种方法

    excel是什么 Microsoft Excel是一个使用非常广泛的电子表格程序.它的用户友好性和吸引人的功能使其成为数据科学中常用的工具.对于excel来说,整个excel文件称为工作簿,工作簿中的 ...

  6. python怎么导入视频-Python读取视频的两种方法(imageio和cv2)

    用python读取视频有两种主要方法,大家可依据自己的需求进行使用. 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用. import pylab impo ...

  7. 用python打开视频_Python读取视频的两种方法(imageio和cv2)

    用python读取视频有两种主要方法,大家可依据自己的需求进行使用. 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用. import pylab impo ...

  8. python 获取csv的列数_Python读取excel的两种方法

    excel是什么 Microsoft Excel是一个使用非常广泛的电子表格程序.它的用户友好性和吸引人的功能使其成为数据科学中常用的工具.对于excel来说,整个excel文件称为工作簿,工作簿中的 ...

  9. mysql行转列sql函数_sql动态行转列的两种方法

    第一种方法: 代码如下: select *from ( select Url,case  when  Month=01 then  '1月' when  Month=02 then '2月' when ...

最新文章

  1. 想学 Java 的你,来看看这 20 个实战项目!
  2. windows 服务开发教程
  3. delphi读取excel
  4. switch()语句块的出口:break;
  5. CentOS 7.2 终端安装字体
  6. c 命令行简易计算器
  7. XStream---Java对象和XML之间的转换器
  8. Uranus Ex通过完善自身,影响更广阔的金融衍生品市场
  9. 操作系统课程设计--银行家算法的模拟实现
  10. IDEA使用SVN上传项目
  11. 黑苹果声卡id注入对照表_黑苹果 声卡ID AppleALC ID,一篇查询就够了
  12. Django之开发微信小程序后端-Django篇②
  13. 听北大公开课庄明科老师《大学生职业素养提升》第一集:《自我效能感》的笔记
  14. 计算机中低级语言和高级语言的区别?
  15. 仿微信朋友圈拍照上传
  16. SVN代码迁移到Gitlab(保留SVN的提交记录)
  17. cad镜像后标注尺寸数字反了_CAD镜像后轴号和标注的尺寸是反的,怎么调整?
  18. EFI引导-硬盘(U盘)安装win7 x64
  19. el-select绑定值赋值后,页面无法显示对应label值
  20. 全球与中国AI在智能手机和可穿戴设备中的应用市场深度研究分析报告

热门文章

  1. 【软考系统架构设计师】2021年下系统架构师综合知识历年真题
  2. 有什么赚钱的副业吗?大学生能做哪些副业兼职?
  3. 设计变更时,如何直接在工程图中添加修订信息?
  4. webpack的基本使用以及初始化
  5. R0~R16寄存器作用
  6. Deep Learning(深度学习)学习笔记整理系列 | @Get社区
  7. planner_wisdom(),fftw_wisdom_lookup(),fftw_measure_runtime(),init_test_array()函数代码分析
  8. 【深度学习】入门深度学习,看三位顶级大牛Yann LeCun、Yoshua Bengio和Geoffrey Hinton的综述
  9. 注塑模具的五大特点,你知道吗?
  10. 热工基础 - 圆球法测定粒状材料的导热系数 - 思考题及答案 ─=≡Σ(((つ•̀ω•́)つ