PHP下载大文件失败并限制下载速度的实例代码

简介1、问题:PHP在使用readfile函数定义下载文件时候,文件不可以过大,否则会下载失败,文件损坏且不报错;2、原因:这个是因为readfile读取文件的时候会把文件放入缓存,导致内存溢出;3、解决:分段下载,并限制下载速度;

  

PHP下载大文件失败并限制下载速度的实例代码

1、问题:PHP在使用readfile函数定义下载文件时候,文件不可以过大,否则会下载失败,文件损坏且不报错;

2、原因:这个是因为readfile读取文件的时候会把文件放入缓存,导致内存溢出;

3、解决:分段下载,并限制下载速度;

<?php//设置文件最长执行时间set_time_limit(0);if(isset($_GET['filename'])&&!empty($_GET['filename'])){$file_name=$_GET['filename'];$file=__DIR__.'/assets/'.$file_name;}else{echo'whatareyoursearchingfor?';exit();}if(file_exists($file)&&is_file($file)){$filesize=filesize($file);header('Content-De ion:FileTransfer');header('Content-Type:application/octet-stream');header('Content-Transfer-Encoding:binary');header('Accept-Ranges:bytes');header('Expires:0');header('Cache-Control:must-revalidate');header('Pragma:public');header('Content-Length:'.$filesize);header('Content-Disposition:attachment;filename='.$file_name);//打开文件$fp=fopen($file,'rb');//设置指针位置fseek($fp,0);//开启缓冲区ob_start();//分段读取文件while(!feof($fp)){$chunk_size=1024*1024*2;//2MBechofread($fp,$chunk_size);ob_flush();//刷新PHP缓冲区到Web服务器flush();//刷新Web服务器缓冲区到浏览器sleep(1);//每1秒下载2MB}//关闭缓冲区ob_end_clean();fclose($fp);}else{echo'filenotexistsorhasbeenremoved!';}exit();

总结

以上所述是小编给大家介绍的PHP下载大文件失败并限制下载速度的实例代码,希望对大家有所帮助。

下载链接:网站源码/小程序源码/网站模板下载

版权声明

   站内部分内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供网络资源分享服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请 联系我们 一经核实,立即删除。并对发布账号进行永久封禁处理。在为用户提供最好的产品同时,保证优秀的服务质量。


本站仅提供信息存储空间,不拥有所有权,不承担相关法律责任。

给TA打赏
共{{data.count}}人
人已打赏
网站技巧

PHP实现获取url地址中顶级域名的方法示例

2024-9-19 19:44:29

网站技巧

Thinkphp3.2 畅言评论回推接口制作

2024-9-19 19:44:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索