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 Undefined index和Undefined variable的解决方法
Mar 27 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
PHP中基本符号及使用方法
Mar 23 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
php编写的简单页面跳转功能实现代码
Nov 27 PHP
php调用C代码的实现方法
Mar 11 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
Mar 17 PHP
PHP小教程之实现双向链表
Jun 12 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
在WordPress的文章编辑器中设置默认内容的方法
Dec 29 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
PHP输出Excel PHPExcel的方法
Jul 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
PHP 芝麻信用接入的注意事项
2016/12/01 PHP
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
jquery插件之定时查询待处理任务数量
2014/05/01 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
python对数组进行反转的方法
2015/05/20 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
详解python中的 is 操作符
2017/12/26 Python
pip命令无法使用的解决方法
2018/06/12 Python
ipython和python区别详解
2019/06/26 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
python实现超级玛丽游戏
2020/03/18 Python
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
生产文员岗位职责
2014/04/05 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
网络研修随笔感言
2015/11/18 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
详解CocosCreator项目结构机制
2021/04/14 Javascript
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
详解分布式系统中如何用python实现Paxos
2021/05/18 Python
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android