全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 2202|回复: 6

[Windows VPS] 下载文件到128M时就中断了

[复制链接]
发表于 2016-9-3 00:11:42 | 显示全部楼层 |阅读模式
阿里云杭州
一个win IIS8  一个centos lnmp
下载一个MP4文件(源文件大于150M)
两台都下载到127M左右就断开了 失败了 无法再继续下载
源文件小于128M的没问题

求解?

PS:阿里云HK/LinodeJP, centos lnmp 没有发现这个问题
发表于 2016-9-3 01:00:53 | 显示全部楼层
是不是源文件损坏了?还是下载服务器软件设置限制文件大小了?
 楼主| 发表于 2016-9-3 01:26:09 | 显示全部楼层
本帖最后由 ajdits 于 2016-9-3 01:35 编辑
almostsir 发表于 2016-9-3 01:00
是不是源文件损坏了?还是下载服务器软件设置限制文件大小了?


没有损坏,直接网页播放能完整播放。
现在下载出现新问题,IIS8这台 156M的文件下载后只有146M,且无法播放。

之前出现问题的阿里云杭州centos,修改了php memory_limit 大小后,好像正常了。

下载代码
<?php
$file = 'xxx.mp4'; // 要下载的文件
ob_clean();
header('Pragma: public');
header('Last-Modified:'.gmdate('D, d M Y H:i:s') . 'GMT');
header('Cache-Control:no-store, no-cache, must-revalidate');
header('Cache-Control:pre-check=0, post-check=0, max-age=0');
header('Content-Transfer-Encoding:binary');
header('Content-Encoding:none');
header('Content-type:multipart/form-data');
header('Content-Disposition:attachment; filename="第xxx集.mp4"'); //设置下载的默认文件名
header('Content-length:'. filesize($file));
$fp = fopen($file, 'r'); //读取数据,开始下载
while(connection_status() == 0 && $buf = @fread($fp, 8192)){
    echo $buf;
}
fclose($fp);
@flush();
@ob_flush();
exit();
?>
发表于 2016-9-3 02:15:07 | 显示全部楼层
你while里的echo全写到output buffer了,可以
while(xxxxx){
echo $buf;
@ob_flush();
}
节省内存,但可能影响速度。
所以静态文件为啥不用nginx或者apache直接撸
发表于 2016-9-3 02:16:49 来自手机 | 显示全部楼层
我实在想不通静态文件你过一下php干啥。。
 楼主| 发表于 2016-9-3 02:27:35 | 显示全部楼层
dabiantai 发表于 2016-9-3 02:15
你while里的echo全写到output buffer了,可以
while(xxxxx){
echo $buf;


主要是用来在线播放,然后另外做了个PHP文件,有些人不懂怎么保存视频的,就通过php来下载。

用nginx来强制下载,就需要重新开个二级域名,之前没想到这种办法。
发表于 2016-9-5 08:58:10 | 显示全部楼层
母鸡限制下载单个最大文件了吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-11-24 07:29 , Processed in 0.072236 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表