/**
* 104857600=100mb
* 10485760=10mb
* 10485760/吵谈5=2mb
* 读取的定义为源文件
* 写入的定义为目标文件
*/
$size=filesize('201808.txt')
$i=0
$block_info = []
while($size>0){
升侍碰谈滑 //组建规格数组
$block_info[]=[
'size' =>$size>=104857600?104857600:$size,//目标文件大小
'file' =>str_replace('.txt', '','201808.txt').'.'.($i++).'.txt'//目标文件名
]
$size-=104857600//源文件大小递减
}
$fp = fopen('201808.txt',"rb")//打开源文件
foreach($block_info as $k =>$v){
$handle = fopen($v['file'],'wb')//创建并打开目标文件
fwrite($handle,fread($fp,$v['size']))//fwrite函数写入目标文件,fread函数读取源文件并读取设定字节数
fclose($handle)//关闭目标文件
unset($handle)//销毁变量
}
fclose ($fp)//结束关闭源文件
unset($fp)//销毁变量
echo "ok"//输出结果
如果文件不是很大的情况郑早,试试下面这个:
<?phpfunction split_file($file_name, $number_lines)
{
try
野衫 {
if(!file_exists($file_name)) throw new Exception("文件不存在!")
$contents_array = array_chunk(file($file_name), $number_lines)
if(!$contents_array || !is_array($contents_array)) throw new Exception("文件内容不合法颂丛腔!")
array_walk($contents_array, function($contents, $k){
foreach($contents as $value){
file_put_contents($k . '.txt', $value, FILE_APPEND)
}
})
}
catch(Exception $e)
{
echo $e->getMessage()
}
}
split_file("README.md", 200)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)