• php平均拆分大文件为N个小文件


    用PHP程序拆分大文件为N个小文件

    /*
    假设有文件data.log , 内容如下,行数很多,假设有上亿条数据,文件大小大概在800M左右
    92735290
    80334472
    49114074
    87184448
    56073913
    49869384
    41544494
    32725219
    88143005
    41025390
    ...
    50674133
    88480834
    73630065
    84739990
    28690490
    82888793
    32222595
    76950683
    62781066
    69386596
    
    需求是把这个文件平均拆分为N个小文件
    0.log
    92735290
    80334472
    49114074
    ...
    87184448
    56073913
    49869384
    41544494
    
    1.log
    32725219
    88143005
    41025390
    ...
    50674133
    88480834
    73630065
    84739990
    
    2.log
    28690490
    82888793
    32222595
    ...
    76950683
    62781066
    69386596
    */
    
    //废话不多说贴代码
    set_time_limit(500);
    $file = 'data.log';
    
    //制造1000W的行数据
    $handle = fopen($file , 'wb+');
    for ($i=0;$i<10000000;$i++)
    {
        fwrite($handle , rand(10000000,99999999)."
    ");
    }
    fclose($handle);
    exit();
    
    //拆分成小文件
    $sub_file_count = 100;                                   //要拆分的文件个数
    $sub_file_len   = ceil(filesize($file)/$sub_file_count); //每个子文件的大小
    $handle         = fopen($file, "rb");                    //打开文件资源
    rewind($handle);                                         //文件位置指针设为文件流的开头
    $last_n_len = 0;
    for ($i=0;$i<$sub_file_count;$i++)
    {
        $content        = fread($handle , $sub_file_len + $last_n_len);
        $last_n         = strrchr($content , "
    ");   //从最后一个
    开始一直到末尾的字符串
        $last_n_len     = strlen($last_n);            //从最后一个
    开始一直到末尾的字符串的长度
        $trim_n_content = substr($content , 0 , strlen($content) - $last_n_len);
        //写文件
        fwrite(fopen($i.".log", "wb") , $trim_n_content);
        fseek($handle , ftell($handle) - $last_n_len + 1);//设置文件指针
    }
    exit();
    

      

    ——在青春的路上,我们与你携手共进!
  • 相关阅读:
    获取自己的网络出口IP地址
    go语言开发IDE
    国内可用的python源
    Tomcat 配置及优化
    大小不固定的图片和多行文字的垂直水平居中
    行内元素与块级元素比较全面的区别和转换
    常用的四种CSS样式表格
    JS鼠标事件大全
    Javascript 5种方法实现过滤删除前后所有空格
    JavaScript trim 实现(去除字符串首尾指定字符)
  • 原文地址:https://www.cnblogs.com/sajanray/p/4424762.html
Copyright © 2020-2023  润新知