萌新项目人 2018-02-02 02:10 采纳率: 100%
浏览 830
已采纳

php根据主机端的时间逐行读取txt文本

根据主机端的时间,第一个20秒,php输出显示txt文本的第一行,其他行都不显示
第二个20秒,输出显示txt文本的第二行,第一行和其他行都不显示
第三个20秒,输出显示txt文本的第三行,第一、二行和其他行都不显示
以此类推,所有行数都显示完一遍,重新循环
不知道该如何实现,望代码详解

  • 写回答

3条回答 默认 最新

  • 子幽 2018-02-02 03:09
    关注
     $file_path = 'xxx.txt'; //文件路径  
    $line = 0 ; //初始化行数  
    //打开文件  
    $fp = fopen($file_path , 'r') or die("open file failure!");  
    if($fp){  
    //获取文件的一行内容,注意:需要php5才支持该函数;  
    while(stream_get_line($fp,8192,"\n")){  
       $line++;  
    }  
    fclose($fp);//关闭文件  
    }  
    for($n=0;$n<$line;$n++){
        $c = getLine($file_path, $n); // 读取a.txt文件第n行内容
        echo $c;
        sleep(20);
    }
    
    
    
    /**
     * 获取指定行内容
     *
     * @param $file 文件路径
     * @param $line 行数
     * @param $length 指定行返回内容长度
     */
    function getLine($file, $line, $length = 4096){
        $returnTxt = null; // 初始化返回
        $i = 1; // 行数
    
        $handle = @fopen($file, "r");
        if ($handle) {
            while (!feof($handle)) {
                $buffer = fgets($handle, $length);
                if($line == $i) $returnTxt = $buffer;
                $i++;
            }
            fclose($handle);
        }
        return $returnTxt;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛