zoukankan      html  css  js  c++  java
  • php如何高效的读取大文件

    通常来说在php读取大文件的时候,我们采用的方法一般是一行行来讲取,而不是一次性把文件全部写入内存中,这样会导致php程序卡死,下面就给大家介绍这样一个例子。

    需求:有一个800M的日志文件,大约有500多万行, 用PHP返回最后几行的内容。

    实现方法:

    <?php
    /**
     * * * 取文件最后$n行 *
     * 
     * @param string $filename 文件路径 *
     * @param int $n 最后几行 *
     * @return mixed false表示有错误,成功则返回字符串
     *  作者: http://www.manongjc.com
     */
    function FileLastLines($filename, $n){
      if(!$fp = fopen($filename, 'r')){
        echo "打开文件失败,请检查文件路径是否正确,路径和文件名不要包含中文";
        return false;
        }
      $pos = -2;
      $eof = "";
      $str = "";
      while($n > 0){
        while($eof != "n"){
          if(!fseek($fp, $pos, SEEK_END)){
            $eof = fgetc($fp);
            $pos--;
            }else{
            break;
            }
          }
        $str .= fgets($fp);
        $eof = "";
        $n--;
        }
      return $str;
      }
    echo nl2br(FileLastLines('log.txt', 4));
    ?>
  • 相关阅读:
    C++中struct和class的区别
    关于LBP特征等价模式的解释
    常用的颜色模型
    flask类装饰器
    flask的方法视图
    flask standrad class 使用
    flask add_url_rule的使用
    模板的继承
    模板变量设置 set 和 with
    模版include的用法
  • 原文地址:https://www.cnblogs.com/lh460795/p/7452126.html
Copyright © 2011-2022 走看看