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 相关文章推荐
eWebEditor v3.8 商业完整版 (PHP)
Dec 06 PHP
实用函数8
Nov 08 PHP
PHP常用代码大全(新手入门必备)
Jun 29 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
Jun 19 PHP
PHP连接sql server 2005环境配置及问题解决
Aug 08 PHP
php检测数组长度函数sizeof与count用法
Nov 17 PHP
PHP实现获取某个月份周次信息的方法
Aug 11 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
php数组冒泡排序算法实例
May 06 PHP
在PHP中输出JS语句以及乱码问题的解决方案
Feb 13 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者的疑难问答(1)
2006/10/09 PHP
php xfocus防注入资料
2008/04/27 PHP
php xml文件操作实现代码(二)
2009/03/20 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
Express.JS使用详解
2014/07/17 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
Vue实例的对象参数options的几个常用选项详解
2019/11/08 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
促销活动总结怎么写
2014/06/25 职场文书
2014年销售人员工作总结
2014/11/27 职场文书
2014年生产部工作总结
2014/12/17 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
微信小程序基础教程之echart的使用
2021/06/01 Javascript
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
使用SQL实现车流量的计算的示例代码
2022/02/28 SQL Server
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python