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新手谈谈我的学习心得
Feb 25 PHP
php完全过滤HTML,JS,CSS等标签
Jan 16 PHP
PHP 进程锁定问题分析研究
Nov 24 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
php随机输出名人名言的代码
Oct 07 PHP
php中curl和file_get_content的区别
May 10 PHP
laravel 5 实现模板主题功能
Mar 02 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
详解js异步文件加载器
Jan 24 PHP
浅析PHP数据导出知识点
Feb 17 PHP
PHP中有关长整数的一些操作教程
Sep 11 PHP
php屏蔽错误及提示的方法
May 10 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
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
MYSQL 小技巧 -- LAST_INSERT_ID
2009/11/24 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
2017/01/24 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
Three.js实现3D机房效果
2018/12/30 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
基督教卡片、励志礼品、家居装饰等:DaySpring
2018/10/12 全球购物
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
安全检查与奖惩制度
2014/01/23 职场文书
中国梦团日活动总结
2014/07/07 职场文书
出国留学英文自荐信
2015/03/25 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
召开会议通知范文
2015/04/15 职场文书
年会主持人开场白台词
2015/05/29 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL