[不花钱站长]:从免费域名开始[0元] Oracle永久免费VPS[0元] VPS环境搭建免费脚本[0元] 秒变大盘挂载免费网盘[0元] 小白免费采集器1天500W[0元] CF免费DNS+CDN服务[0元]
[零基础网赚]:撸本站免费源码[0元] 网站强引免费蜘蛛法[0元] 图片视频文件免费存储[0元] 外链轻松发布免费友链[0元] 入坑免费教程学习源代码[0元] 网上百种+赚钱联盟推荐[?元]

↑↑VPS推荐网 WWW.VPS.COM.IN 稳定 便宜 免备案↑↑


您现在的位置是:首页 > 全球[VPS测评] >  永久免费VPS 香港VPS,国外永久免费VPS

php 高效统计 txt 大文件行数函数

全球[VPS测评]来源:VPS推荐网点击:1485
【性价之王】【线路之王】【价格之王】【配置之王】
【免费之王】【香港首推】【梯子之王】【独服之王】
php 高效统计 txt 大文件行数函数

php 中提供了专门的 file 函数来读取文件,通过 file 函数可以一次性获取一个 txt 文件的行数:

<?php $line = count(file($filepath)); echo $line; ?>

但是 file 函数不适用于大文件,执行缓慢并且会造成严重的内存问题。

网上还有一种通过 fopen 函数以及 while 逐行统计的代码,如下:

<?php line = 0 ; $fp = fopen($filepath , 'r') or die("open file failure!"); if($fp){ while(stream_get_line($fp,8192,"n")){    $line++; } fclose($fp); } echo $line; ?>

这种方法在读取大文件行数时,同样面临着效率太慢的问题。

经过实践,我们采用以下方法可以超高效率的读取 txt 大文件行数,并且内存占用也很低。

<?php function count_line($file){   $fp=fopen($file, "r");   $i=0;   while(!feof($fp)) {    //每次读取 2M    if($data=fread($fp,1024*1024*2)){    //计算读取到的行数    $num=substr_count($data,"n");    $i+=$num; } } fclose($fp); return $i; } ?>

通过多行统计,每次读取 N 个字节,然后再统计读取的行数累加。

测试情况,文件大小 3.14 GB

第 1 次:line: 13214810 , time:56.2779 s;

第 2 次:line: 13214810 , time:49.6678 s;



猜你可能想看的VPS


转载请注明原文地址:http://140.238.13.167:12355/read-208286.html

下一篇       上一篇