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 相关文章推荐
我常用的几个类
Oct 09 PHP
在PWS上安装PHP4.0正式版
Oct 09 PHP
PHP define函数的使用说明
Aug 27 PHP
PHP技术开发技巧分享
Mar 23 PHP
ExtJS与PHP、MySQL实现存储的方法
Apr 02 PHP
php文本转图片自动换行的方法
Mar 13 PHP
PHP设计模式之迭代器模式的深入解析
Jun 13 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 PHP
php插件Xajax使用方法详解
Aug 31 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
PHP htmlentities()函数用法讲解
Feb 25 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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php递归实现无限分类的方法
2015/07/28 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
利用CSS3在Angular中实现动画
2016/01/15 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
webpack配置sass模块的加载的方法
2017/07/30 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
从零学Python之入门(三)序列
2014/05/25 Python
python中__call__方法示例分析
2014/10/11 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
Python实现图像的垂直投影示例
2020/01/17 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
前端实现打印图像功能
2019/08/27 HTML / CSS
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
Nisbets爱尔兰:英国最大的厨房和餐饮设备供应商
2019/01/26 全球购物
Nike香港官网:Nike HK
2019/03/23 全球购物
自动化专业个人求职信范文
2013/12/30 职场文书
社区中秋节活动方案
2014/01/29 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
入股协议书范本
2014/11/01 职场文书