<?php |
/* |
* 将大文件分割成多个小文件 |
*/ |
error_reporting (0); |
set_time_limit(100); |
$i = 0; //分割的块编号 |
$fp = fopen ( "vso_users.txt" , "r" ); //要分割的文件 |
$file = fopen ( "vso_users/split_hash.txt" , "a" ); //记录分割的信息的文本文件 |
while (! feof ( $fp )) |
//while($i<5) |
{ |
$handle = fopen ( "vso_users/{$i}.vso_users.txt" , "w" ); |
$data = fread ( $fp ,1024*1024*1); // 1M 可以自定义.就是每个所分割的文件大小 |
|
if ( substr ( $data ,-2) != "\n" ){ |
//该块最后不为换行符时,将指针前移到最后一个换行符之后 |
$offset = strlen ( $data )-( strrpos ( $data , "\n" )+1); |
if (! feof ( $fp )){ |
//文件未结束,则前移指针位置(保证读取内容的最后一行总是整行内容);若已读到文件结束位置则不移动文件指针位置。 |
fseek ( $fp ,- $offset ,SEEK_CUR); |
} |
//去掉最后一个换行符及其之后的内容 |
$data = substr ( $data ,0, strrpos ( $data , "\n" )); |
} |
|
fwrite( $handle , $data ); |
fwrite( $file , "qqdjz_002.txt.{$i}" . substr ( $data ,-2). "\r\n" ); |
fclose( $handle ); |
unset( $handle ); |
$i ++; |
} |
fclose ( $fp ); |
fclose ( $file ); |
echo "split finished!" ; |
?> |
初级程序员
by: Youn 发表于:2016-02-14 21:49:55 顶(0) | 踩(0) 回复
回复评论