PHP实现断点续传乱序合并文件的方法


Posted in PHP onSeptember 06, 2018

本文实例讲述了PHP实现断点续传乱序合并文件的方法。分享给大家供大家参考,具体如下:

分割成多个文件发送,由于网络原因并不上先发就能发接收到。所以我们不能按顺序合并。

分割文件源码前面一篇文章《PHP断点续传之文件分割合并》

merge2.php

<?php
$fileTotaiSize = filesize("socket.zip");
$filelist = glob('./split/*socket*.tmp');
$filesize = 3096;
//打乱读取文件顺序
shuffle($filelist);
$mergeFileName = 'merg2.zip';
 if(is_file($mergeFileName))
 {
 unlink($mergeFileName);
 }
 $fp2 = fopen($mergeFileName,"w+");
 //创建空白文件
 $str = str_pad('',$fileTotaiSize);
 fwrite($fp2, $str, $fileTotaiSize);
foreach($filelist as $k => $v)
{
 $tmp = explode('.',$v);
 $len = explode('-', $tmp[3]);
 $offset = (int) $len[0];
 $fp = fopen($v, "rb");
 $content = fread($fp, $filesize);
  echo $offset, "\n";
  fseek($fp2, $offset);
  fwrite($fp2, $content, strlen($content));
  unset($content);
  fclose($fp);
}
fclose($fp2);

补充:前文中的分割文件split.php如下:

<?php
$fp = fopen("socket.zip", "rb");
$filesize = 10;
$i = 0;
$no = 1;
while(!feof($fp))
{
 $file = fread($fp, $filesize);
 $fp2 = fopen("./split/socket.port".sprintf("%04d",$no).".".$i."-".($i+$filesize).".tmp", "wb");
 fwrite($fp2, $file, $filesize);
 fclose($fp2);
 $i+=$filesize+1;
$no++;
}
fclose($fp);

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP - Html Transfer Code
Oct 09 PHP
PHP新手上路(七)
Oct 09 PHP
PHP 实例化类的一点摘记
Mar 23 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 PHP
php全局变量和类配合使用深刻理解
Jun 05 PHP
将php数组输出html表格的方法
Feb 24 PHP
PHP延迟静态绑定示例分享
Jun 22 PHP
php 判断IP为有效IP地址的方法
Jan 28 PHP
PHP异常类及异常处理操作实例详解
Dec 19 PHP
Ajax+PHP实现的模拟进度条功能示例
Feb 11 PHP
laravel 5.3 单用户登录简单实现方法
Oct 14 PHP
PHP7变量处理机制修改
Mar 09 PHP
php JWT在web端中的使用方法教程
Sep 06 #PHP
php进程daemon化的正确实现方法
Sep 06 #PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 #PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 #PHP
PHP使用pdo实现事务处理操作示例
Sep 05 #PHP
Django 标签筛选的实现代码(一对多、多对多)
Sep 05 #PHP
利用PHP扩展Xhprof分析项目性能实践教程
Sep 05 #PHP
You might like
PHP数学运算与数据处理实例分析
2016/04/01 PHP
Iframe 自适应高度并实时监控高度变化的js代码
2009/10/30 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
vue.js语法及常用指令
2017/10/29 Javascript
react 国际化的实现代码示例
2018/09/14 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
python3中数组逆序输出方法
2020/12/01 Python
Python 图片处理库exifread详解
2021/02/25 Python
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
给酒店员工的表扬信
2014/01/11 职场文书
政风行风评议心得体会
2014/10/21 职场文书
工作失职自我检讨书
2015/05/05 职场文书
小学生节约用水倡议书
2019/08/12 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
mysql 排序失效
2022/05/20 MySQL