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通用分页类page.php[仿google分页]
Aug 31 PHP
php 删除无限级目录与文件代码共享
Nov 22 PHP
PHP 模拟$_PUT实现代码
Mar 15 PHP
PHP中改变图片的尺寸大小的代码
Jul 17 PHP
php cli 小技巧
Jun 03 PHP
PHP与MYSQL中UTF8编码的中文排序实例
Oct 21 PHP
php使用wordwrap格式化文本段落的方法
Mar 17 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
Jul 28 PHP
PHP实现无限分类的实现方法
Nov 14 PHP
PHP-FPM 的管理和配置详解
Feb 17 PHP
PHP实现的策略模式示例
Mar 20 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 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动态函数调用方法
2015/05/21 PHP
JavaScript 空位补零实现代码
2010/02/26 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
vue.js树形组件之删除双击增加分支实例代码
2017/02/28 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
JS回调函数 callback的理解与使用案例分析
2019/09/09 Javascript
微信小程序实用代码段(收藏版)
2019/12/17 Javascript
js实现无缝轮播图
2020/03/09 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
python 错误处理 assert详解
2020/04/20 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
super()与this()的区别
2016/01/17 面试题
如何打开WebSphere远程debug
2014/10/10 面试题
房屋继承公证书
2014/04/10 职场文书
超市商业计划书
2014/05/04 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
如何写辞职书
2015/02/26 职场文书
校园之声广播稿
2015/08/18 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL