[php]代码库<?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!";
?>