php断点续传之如何分割合并文件


Posted in PHP onMarch 22, 2014
<?php 
ini_set("memory_limit", "50M");//必须的,根据你环境的实际情况尽量大,防止报错 
ini_set("max_execution_time", "100"); 
//file_exists() 函数检查文件或目录是否存在,存在则返回 true,否则返回 false。 
//fread() 函数读取文件(可安全用于二进制文件)。fread() 从文件指针 file 读取最多 length 个字节。 
//filesize() 函数返回指定文件的大小(字节)。本函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。 
$orgFile = 'Fireworks8-chs.exe';//源文件 
$cacheFileName = 'vbcache';//分割成的临时文件块 
function cutFile($fileName,$block) {//分割 
global $cacheFileName; 
if (!file_exists($fileName)) return false; 
$num = 1; 
$file = fopen($fileName, 'rb'); 
while ($content = fread($file,$block)) { 
$cacheFile = $cacheFileName . $num++ . '.dat'; 
$cfile = fopen($cacheFile, 'wb'); 
fwrite($cfile, $content); 
fclose($cfile); 
} 
fclose($file); 
} 
function mergeFile($targetFile) {//合并 
global $cacheFileName; 
$num = 1; 
$file = fopen($targetFile, 'wb'); 
while ($num > 0) { 
$cacheFile = $cacheFileName . $num++ . '.dat'; 
if (file_exists($cacheFile)) { 
$cfile = fopen($cacheFile, 'rb'); 
$content = fread($cfile, filesize($cacheFile)); 
fclose($cfile); 
fwrite($file, $content); 
} 
else { 
$num = -1; 
} 
} 
fclose($file); 
} 
//调用 
cutFile($orgFile, 10 * pow(2,20)); //10 * pow(2,20) 就等于 10M pow() 函数返回 x 的 y 次方 
mergeFile('ok.exe'); 
?>
PHP 相关文章推荐
PHP 程序员应该使用的10个组件
Oct 31 PHP
php 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 PHP
关于PHP结束标签的使用细节探讨及联想
Mar 04 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
Aug 31 PHP
PHP的PSR规范中文版
Sep 28 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
thinkPHP中验证码的简单使用方法
Dec 26 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 PHP
PHP Swoole异步读取、写入文件操作示例
Oct 24 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
php 邮件发送问题解决
Mar 22 #PHP
php数组合并的二种方法
Mar 21 #PHP
php数组删除元素示例
Mar 21 #PHP
php动态生成函数示例
Mar 21 #PHP
xss防御之php利用httponly防xss攻击
Mar 21 #PHP
php5.3 goto函数介绍和示例
Mar 21 #PHP
php ctype函数中文翻译和示例
Mar 21 #PHP
You might like
五个PHP程序员工具
2008/05/26 PHP
php.ini 配置文件的深入解析
2013/06/17 PHP
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
解决jquery版本冲突的有效方法
2014/09/02 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
利用JavaScript如何查询某个值是否数组内
2017/07/30 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
vue权限问题的完美解决方案
2019/05/08 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
python如何统计序列中元素
2020/07/31 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
tensorflow 实现从checkpoint中获取graph信息
2020/02/10 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
基于python代码批量处理图片resize
2020/06/04 Python
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
高中美术教学反思
2014/01/19 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
个人函授自我鉴定
2014/03/25 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
HTML基础详解(上)
2021/10/16 HTML / CSS
企业开发CSS命名BEM代码规范实践
2022/02/12 HTML / CSS