相关疑难解决方法(0)

在PHP中可靠地下载大文件

我在服务器上有一个PHP脚本将文件发送给配方:它们获得一个唯一的链接,然后他们可以下载大文件.有时传输出现问题,文件已损坏或永不完成.我想知道是否有更好的方法来发送大文件

码:

$f = fopen(DOWNLOAD_DIR.$database[$_REQUEST['fid']]['filePath'], 'r');
while(!feof($f)){
    print fgets($f, 1024);
}
fclose($f);
Run Code Online (Sandbox Code Playgroud)

我见过的功能如

http_send_file
http_send_data
Run Code Online (Sandbox Code Playgroud)

但我不确定他们是否会奏效.

解决这个问题的最佳方法是什么?

问候
erwing

php download

24
推荐指数
5
解决办法
4万
查看次数

为什么readfile()会耗尽PHP内存?

我已经看到很多关于如何有效地使用PHP下载文件而不是允许直接HTTP请求(保持文件安全,跟踪下载等)的问题.

答案几乎总是PHP readfile().

但是,虽然它在使用大文件进行测试时效果很好,但是当它在拥有数百个用户的实时网站上时,下载开始挂起并且PHP内存限制已经耗尽.

那么readfile()当流量高时,导致内存爆炸的工作原理是什么呢?我以为它应该通过直接写入输出缓冲区绕过大量使用PHP内存?

编辑:(澄清一下,我正在寻找"为什么",而不是"我能做什么".我认为Apache的mod_xsend文件是规避的最好方法)

php memory readfile

22
推荐指数
1
解决办法
1万
查看次数

标签 统计

php ×2

download ×1

memory ×1

readfile ×1