zoukankan      html  css  js  c++  java
  • PHP获取文件行数

    原文出处

    提供两种实现方法,但是第一种效率最好

    第一种:

    <?php
    $file_path = 'test.txt'; //文件路径  此处找一个1094644行的TXT文件 test.txt
    $line = 0 ; //初始化行数
    //打开文件
    set_time_limit(0);
    echo "开始时间:".date("H:i:s")."</br>";  //此处设一个计时器 开始时间
    $fp = fopen($file_path , 'r') or die("open file failure!");
    if($fp){
    //获取文件的一行内容,注意:需要php5才支持该函数;
    while(stream_get_line($fp,8192,"
    ")){
       $line++;
    }
    fclose($fp);//关闭文件
    }
    //输出行数;
    echo $line."</br>";
    echo "结束时间:".date("H:i:s")."</br>";  //此处设一个计时器 结束时间
    
    ?>
    

     查看一下网页显示结果:

    连一秒都不到。可以看出这样的效率还是蛮高的。

    第二种:

    <?php
    
        $file_path = 'test.txt'; //文件路径  此处找一个1094644行的TXT文件 test.txt
        set_time_limit(0);
        echo "开始时间:".date("H:i:s")."</br>";  //此处设一个计时器 开始时间
        $line = count(file($file_path));
        //输出行数;
        echo $line."</br>";
        echo "结束时间:".date("H:i:s")."</br>";  //此处设一个计时器 结束时间
    ?>
    

      查看一下网页显示结果:

    好像也很快,也不到1秒钟。

    下面我再用时间戳试一下:

    修改一下PHP语句

    第一种方法:

    <?php
    $file_path = 'test.txt'; //文件路径  此处找一个1094644行的TXT文件 test.txt
    $line = 0 ; //初始化行数
    //打开文件
    set_time_limit(0);
    $start_time=microtime(true);//获取程序执行开始的时间
    $fp = fopen($file_path , 'r') or die("open file failure!");
    if($fp){
    //获取文件的一行内容,注意:需要php5才支持该函数;
    while(stream_get_line($fp,8192,"
    ")){
       $line++;
    }
    fclose($fp);//关闭文件
    }
    //输出行数;
    echo $line."</br>";
    $end_time=microtime(true);//获取程序执行结束的时间
    $elapse=$end_time-$start_time; //获取差值
    echo "消耗时间".$elapse."</br>";  //此处设一个计时器 结束时间
    
    ?>
    

     得到结果:

    第二种方法:

    <?php
    
        $file_path = 'test.txt'; //文件路径  此处找一个1094644行的TXT文件 test.txt
        set_time_limit(0);
        $start_time=microtime(true);//获取程序执行开始的时间
        $line = count(file($file_path));
        //输出行数;
        echo $line."</br>";
        $end_time=microtime(true);//获取程序执行结束的时间
        $elapse=$end_time-$start_time; //获取差值
        echo "消耗时间".$elapse."</br>";  //此处设一个计时器 结束时间
    ?>
    

    得到结果:

    这种方法测试的可以明显看出来,还是第一种方法要好的多。

  • 相关阅读:
    面试中遇到递归算法题别慌--常见递归算法题的解题思路
    Xml日志记录文件最优方案(附源代码)
    linux下源码安装软件
    文本比较算法Ⅴ——回顾贴,对前面几篇文章的回顾与质疑
    从内存中直接运行PE程序
    谈谈Linux内核驱动的coding style
    【全面解禁!真正的Expression Blend实战开发技巧】第六章 认识ListBox
    玩转C链表
    麻省理工《C内存管理和C++面向对象编程》笔记---第一讲:认识C和内存管理
    Dll注入技术之输入法注入
  • 原文地址:https://www.cnblogs.com/quixon/p/4684898.html
Copyright © 2011-2022 走看看