首页 > 解决方案 > 使用 PHP 从 URL 下载文件

问题描述

我有循环下载 1500 个 XML 提要/天。每个 URL 都是从不同的服务器下载的。

目前我正在使用简单

file_put_contents($filename, fopen($url, 'r'))

我也尝试过CURL(当服务器重定向几次或有一些服务器延迟或 https 时没有成功),file_get_contents而不是fopen但没有任何东西(除了fopen)与许多不同的服务器一起正常工作。

但是,我在处理下载时遇到了问题,没有浪费时间等待一个链接结束,另一个链接开始。我可能阅读了网站上的所有文章,但真的不知道该怎么做。

在某些情况下,当:

  1. 服务器在 1 分钟后响应。(当我的服务器超时时它会死掉)
  2. 服务器的下载速度太慢了,250mb的文件要下载2个小时。还有一些在 4s 下下载的 1,5Gb 文件的链接没有问题。

我需要处理下载方式,在任何情况下它都会返回truefalse。没有错误,没有时间浪费,没有等待下载。简单地说,如果下载文件需要超过 fe 5 分钟,则返回 false 并继续到另一个链接。如果无法连接或出现错误,请停止操作并继续访问另一个链接。我找不到如何计算下载或连接限制的解决方案。

stream_context_create(["http"=>["timeout"=>$timeout]])不起作用,因为 99% 的链接都是 https。

可能吗?

谢谢你的帮助。

标签: phpdownloadfile-put-contents

解决方案


推荐阅读