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 相关文章推荐
动态生成gif格式的图像要注意?
Oct 09 PHP
php5.2时间相差8小时
Jan 15 PHP
PHP程序员编程注意事项
Apr 10 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
php项目开发中用到的快速排序算法分析
Jun 25 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
php array_chunk()函数用法与注意事项
Jul 12 PHP
thinkphp诸多限制条件下如何getshell详解
Dec 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制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
PHP在线书签系统分享
2016/01/04 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
常用简易JavaScript函数
2009/04/09 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
封装好的js判断操作系统与浏览器代码分享
2015/01/09 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
python异步存储数据详解
2019/03/19 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
创业者是否需要商业计划书?
2014/02/07 职场文书
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
另类冲刺标语
2014/06/24 职场文书
学习考察心得体会
2014/09/04 职场文书
物流业务员岗位职责
2015/04/03 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS