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 相关文章推荐
PHP4实际应用经验篇(4)
Oct 09 PHP
一个简单的PHP&amp;MYSQL留言板源码
Jul 19 PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
php源代码安装常见错误与解决办法分享
May 28 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
Jun 04 PHP
PHP cURL初始化和执行方法入门级代码
May 28 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
Dec 14 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
Apr 04 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
粗略计算在线时间,bug:ip相同
2006/12/09 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
php框架知识点的整理和补充
2021/03/01 PHP
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
jQuery中:not选择器用法实例
2014/12/30 Javascript
JS中改变this指向的方法(call和apply、bind)
2016/03/26 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
VuePress 快速踩坑小结
2019/02/14 Javascript
使用python实现省市三级菜单效果
2016/01/20 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
python虚拟环境完美部署教程
2019/08/06 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
仓库管理专业个人的自我评价
2013/12/30 职场文书
一年级数学教学反思
2014/02/01 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
纪检监察立案决定书
2015/06/24 职场文书
丧事主持词
2015/07/02 职场文书
Promise面试题详解之控制并发
2021/05/14 面试题