海运的博客

PHP读取大文件指定行

发布时间:December 1, 2013 // 分类:PHP // No Comments

<?php
 function getFileLines($filename, $startLine = 1, $endLine = 50, $method = 'rb'){
     $content = array();
    
     if (version_compare(PHP_VERSION, '5.1.0', '>=')){ // 5.1版本之上使用Splfileobject
         $count = $endLine - $startLine;
         $fp = new SplFileObject($filename, $method);
         $fp -> seek($startLine - 1); // 转到$startLine行,seek方法从0开始计数
         for ($i = 0; $i <= $count; ++$i){
             $content[] = trim(($fp -> current()), "\n"); //current()方法取当前行清除换行保存到数组
             $fp -> next(); //循环下一行
             }
         }else{ // PHP<5.1
         $fp = fopen($filename, $method);
         if (!$fp)
             return 'error:can not read file';
         for ($i = 1; $i < $startLine; ++$i){ //定位到$startLine行
             fgets($fp);
            }
        
        for ($i; $i <= $endLine; ++$i){
             $content[] = fgets($fp); //从$startLine行开始循环读取到$endLine行
            }
        fclose($fp);
        }
    return array_filter($content); //返回array_filter(flase,null,0)过滤后的数组
    }
?>

示例:

<?php
$filename = 'file.txt';
$start = 1;
$end = 10;
$count = $end - $start;
while (true){
     $data = getFileLines($filename, $start, $end);
     // var_dump($data);
    $rev = ver($data);
     if($data[9] == ''){
         die("End");
         sleep(10);
        }
    $start = $start + 10;
    $end = $end + 10;
    }
?>

标签:php

发表评论

分类
最新文章
最近回复
  • crowjin: 你确定这能过滤??不是所有请求都返回空地址::?
  • : linux系统上单个网卡多条宽带拨号获取公网IP,外网可以访问这些IP,有偿! Q:25299...
  • 硅谷少年: 非常有用,感谢分享
  • spartan2: https://dashboard.hcaptcha.com/welcome_accessib...
  • 海运: 应该能,在购买页面先手工跳过cf机器验证,后续一定时间内不更换ip应该不会再次验证。
  • spartan: 大佬斯巴达开启了CF的机器识别验证,请问插件能自动跳过吗? 另外这个脚本有没有简单使用说明,新...
  • vincent: 膜拜大佬
  • 海运: proxy-header或proxy_protocol
  • liangjw: 如果是 内部调用 或者 中间存在 代理 而上一个代理又在内网 ,那怎么处理来自代理私有IP?
  • chainofhonor: 感谢,用dnsmasq设置自动判断BIOS和UEFI成功了