Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP卷曲恢复下载_Php_Google Chrome_Curl_Satellite Image - Fatal编程技术网

PHP卷曲恢复下载

PHP卷曲恢复下载,php,google-chrome,curl,satellite-image,Php,Google Chrome,Curl,Satellite Image,我目前正试图用curl从欧空局的哥白尼/哨兵项目下载卫星图像。不幸的是,下载一直停留在90%左右,php脚本返回一个内部服务器错误500。 因此,我想在一个特定的字节号上继续下载。esa服务器似乎只是忽略了http范围头CURLOPT_range,而CURLOPT_RESUME_FROM也没有改变任何内容。 如果我使用Google Chrome手动下载文件,下载也会中断,但会在一段时间后继续。 因此,如果Google Chrome能够恢复下载,curl也应该能够做到这一点。如果你能帮我,我将不胜

我目前正试图用curl从欧空局的哥白尼/哨兵项目下载卫星图像。不幸的是,下载一直停留在90%左右,php脚本返回一个内部服务器错误500。 因此,我想在一个特定的字节号上继续下载。esa服务器似乎只是忽略了http范围头CURLOPT_range,而CURLOPT_RESUME_FROM也没有改变任何内容。 如果我使用Google Chrome手动下载文件,下载也会中断,但会在一段时间后继续。 因此,如果Google Chrome能够恢复下载,curl也应该能够做到这一点。如果你能帮我,我将不胜感激。 一些细节: 我试图下载的文件是420MB,要访问它,您需要在scihub.esa.int/dhus/注册。 内容类型为应用程序/八位字节流 我的代码:

它适用于较小的文件,我已经用一些图像和pdf文件对它进行了测试,而且我还可以下载大部分卫星图像,前380MB已经下载。我也尝试增加超时值,但脚本在到达5分钟之前就终止了。 我试过curl_setopt$open_file,curl_RESUME_FROM,1048576;和curl_setopt$open_文件,curl_范围,1048576-;但是文件总是以相同的字节开始。 编辑: 我无法回答我的问题,但对于这个具体案例,我找到了一个解决办法。所以,如果有人读了这篇文章,还想偶然下载这些带有cURL的卫星图像,下面是我所做的:
当下载的不仅仅是图像文件,还有包含一些附加数据的zip文件时,下载仍然会停止,但是使用curl_setopt$open_file,CURLOPT_RESUME_FROM,$bytes_已经加载;可以跳过以前加载的字节,并恢复图像文件无法下载的下载。因此,使用此文件而不是图像文件。

听起来像是服务器上的文件大小限制和exe时间限制。更改您的php服务器设置。文件大小限制没有问题,实际上我第一次尝试运行脚本时很幸运:下载没有中断,整个文件都已下载。但这是它唯一有效的一次。我刚刚编写并测试了一个php脚本,如果我在10分钟后没有中断它,它会无限运行,或者每个IP在服务器的另一端有一个限制。他们不希望人们占用他们的带宽,我试着使用curl_setopt$open_file,CURLOPT_MAX_RECV_SPEED_LARGE,2000000;为了限制传输速度,下载速度变慢了,但无论如何停止在93%。
$save_file = fopen($save_filepath, "w+");
$open_file = curl_init(str_replace(" ","%20", $url));
curl_setopt($open_file, CURLOPT_USERPWD, $username.":".$password);
curl_setopt($open_file, CURLOPT_TIMEOUT, 300);
curl_setopt($open_file, CURLOPT_FILE, $save_file);
curl_setopt($open_file, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($open_file, CURLOPT_PROGRESSFUNCTION, "trackprogress");
curl_setopt($open_file, CURLOPT_NOPROGRESS, false);
curl_exec($open_file);
curl_close($open_file);
fclose($save_file);