zoukankan      html  css  js  c++  java
  • 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();
    

      

    ——在青春的路上,我们与你携手共进!
  • 相关阅读:
    ADO.NET存取数据库数据
    2017-01-03
    re模块
    random模块(随机)
    sys模块
    os模块
    datetime模块
    time模块
    logging模块
    Python函数初识
  • 原文地址:https://www.cnblogs.com/sajanray/p/4424762.html
Copyright © 2011-2022 走看看