PHP 使用 cURL 下载一个巨大的电影文件 (500 MB)

标签 php curl download large-files

好的,我有一个问题希望你能帮我解决。

我正在运行一个存储非常大的视频文件的服务器,有些文件高达 650 MB。我需要一个用户能够请求这个页面并将文件下载到他们的机器上。我已经尝试了所有方法,但是一个普通的 readfile() 请求在退出前挂起大约 90 秒,并给我一个“没有收到数据错误 324 代码”,我从几个网站找到的分块读取文件脚本甚至没有开始下载,通过 PHP 解决方案的 FTP 在我尝试获取文件时只给我错误,而我发现的唯一 cURL 解决方案只是在我的服务器上创建另一个文件。那不是我需要的。

明确我需要用户能够下载文件到他们的计算机和< strong>不是服务器。

我不知道这段代码是垃圾还是只需要一两次调整,但我们非常感谢您的帮助!

<?php

$fn = $_GET["fn"];

echo $fn."<br/>";

$url  = $fn;
$path = "dl".$fn;

$fp = fopen($path, 'w');

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);

$data = curl_exec($ch);

curl_close($ch);
fclose($fp);

?>

最佳答案

我不建议使用 PHP 或任何其他脚本技术来处理大型二进制文件。他们从不为此设计——您可以使用 apache、nginx 或您在后端拥有的任何标准 http 服务器。如果您仍然需要使用 PHP,那么您应该查看 readfile_chunked。

http://php.net/readfile#48683 这是一个很棒的教程。 http://teddy.fr/blog/how-serve-big-files-through-php

祝你好运。

关于PHP 使用 cURL 下载一个巨大的电影文件 (500 MB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10958264/

相关文章:

PHP脚本不向MySQL插入数据

php - 使用日期范围搜索时优化 mysql 查询

php - 为什么 cUrl 无法通过 HTTPS 下载,除非 CURLOPT_SSL_VERIFYPEER 设置为 "false"?

swift - 在 Swift 5 中从 AWS S3 下载文本文件

php - 通过 PHP 缓存图像请求 - If-Modified-Since 未发送

php - 这里需要一点关于 php 的帮助

python - 除运行 py 文件外,无法在 python-eve 中包含模型

php - 在 PHP 中使用 CURL 对 api 进行推送调用

android - 使用 PDF 链接 Action_view 让 Webview Activity 消失

download - WiX 执行包 : Failed to send request to URL