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 Image Resize图片大小调整的函数代码
Jan 17 PHP
apache+php完美解决301重定向的两种方法
Jun 08 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
php简单获取目录列表的方法
Mar 24 PHP
详细解读PHP中接口的应用
Aug 12 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
PHP实现数组array转换成xml的方法
Jul 19 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
浅谈Laravel中的一个后期静态绑定
Aug 11 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 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生成excel列序号代码实例
2013/12/24 PHP
php中的mongodb select常用操作代码示例
2014/09/06 PHP
php判断linux下程序问题实例
2015/07/09 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
python 合并文件的具体实例
2013/08/08 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
python实现简单中文词频统计示例
2017/11/08 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
python爬虫实现获取下一页代码
2020/03/13 Python
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
HTML 5 input placeholder 属性如何完美兼任ie
2014/05/12 HTML / CSS
设计师个人求职信范文
2014/02/02 职场文书
庆元旦活动总结
2014/07/09 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
Linux安装apache服务器的配置过程
2021/11/27 Servers
python manim实现排序算法动画示例
2022/08/14 Python