gpt4 book ai didi

php - 下载大文件 (500MB+) 时 Curl 挂起

转载 作者:搜寻专家 更新时间:2023-10-31 21:44:49 27 4
gpt4 key购买 nike

我正在使用 cURL 从远程服务器下载大型 XML 文件(500MB 到 1GB 之间)。虽然该脚本适用于较小的测试文件,但每次我尝试下载大于几百兆的文件时,脚本似乎挂起 - 它没有退出,没有错误消息,它只是卡在那里。

我正在从命令行 (CLI) 执行脚本,因此 PHP 本身不应超时。我也尝试过 cURL 的详细模式,但是除了初始连接之外什么也没有显示。每次我下载文件时,它都会停止在完全相同的大小 (463.3MB)。此时文件的 XML 不完整。

非常感谢任何想法。

        $ch = curl_init();
$fh = fopen($filename, 'w');

curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE );
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 0);

if(curl_exec($ch) === false)
{
echo 'Curl error: ' . curl_error($ch) . "\n";
}
else
{
echo 'Operation completed without any errors';
}

$response = array(
'header' => curl_getinfo($ch)
);

curl_close($ch);
fclose($fh);

if($response['header']['http_code'] == 200) {
echo "File downloaded and saved as " . $filename . "\n";
}

同样,此脚本适用于较小的文件,但对于我尝试下载的大文件,它甚至无法打印出错误消息。

这会不会是其他东西(Linode 上的 Ubuntu 10.04)终止了脚本?据我所知,我的网络服务器在这里应该无关紧要,因为我是通过 CLI 运行它的。

谢谢,

马特

最佳答案

文件停止下载时似乎已完成,对吗?在命令中添加 -m 10800 将在指定的秒数后超时并结束传输。如果您将超时设置得比传输时间长,这将起作用,但仍然很烦人。

关于php - 下载大文件 (500MB+) 时 Curl 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453264/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com