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自动跳转中英文页面
Jul 29 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
Aug 28 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
Yii实现简单分页的方法
Apr 29 PHP
PHP屏蔽关键字实现方法
Nov 17 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
php新建文件的方法实例
Sep 26 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 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
第七节 类的静态成员 [7]
2006/10/09 PHP
php array_merge下进行数组合并的代码
2008/07/22 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
Vue.js使用v-show和v-if的注意事项
2016/12/13 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
Python tkinter事件高级用法实例
2018/01/31 Python
python tornado微信开发入门代码
2018/08/24 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
django 外键创建注意事项说明
2020/05/20 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
印度低票价航空公司:GoAir
2017/10/11 全球购物
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
装修设计师求职信
2014/02/26 职场文书
学习经验演讲稿
2014/05/10 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
新闻通讯稿范文
2015/07/22 职场文书
学校安全管理制度
2015/08/06 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python
JS实现简单的九宫格抽奖
2022/06/28 Javascript
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技