php - 使用 PHP 从 URL 下载文件
问题描述
我有循环下载 1500 个 XML 提要/天。每个 URL 都是从不同的服务器下载的。
目前我正在使用简单
file_put_contents($filename, fopen($url, 'r'))
我也尝试过CURL
(当服务器重定向几次或有一些服务器延迟或 https 时没有成功),file_get_contents
而不是fopen
但没有任何东西(除了fopen
)与许多不同的服务器一起正常工作。
但是,我在处理下载时遇到了问题,没有浪费时间等待一个链接结束,另一个链接开始。我可能阅读了网站上的所有文章,但真的不知道该怎么做。
在某些情况下,当:
- 服务器在 1 分钟后响应。(当我的服务器超时时它会死掉)
- 服务器的下载速度太慢了,250mb的文件要下载2个小时。还有一些在 4s 下下载的 1,5Gb 文件的链接没有问题。
我需要处理下载方式,在任何情况下它都会返回true或false。没有错误,没有时间浪费,没有等待下载。简单地说,如果下载文件需要超过 fe 5 分钟,则返回 false 并继续到另一个链接。如果无法连接或出现错误,请停止操作并继续访问另一个链接。我找不到如何计算下载或连接限制的解决方案。
stream_context_create(["http"=>["timeout"=>$timeout]])
不起作用,因为 99% 的链接都是 https。
可能吗?
谢谢你的帮助。
解决方案
推荐阅读
- mpdf - mpdf 如何在版本 7 上设置页边距?
- sql - 在SQL中,如何在不改变表结构的情况下按顺序填充列中的数字?
- ios - coredata 获取数组的元素
- python - 如何在 DataFrame.drop_duplicates() 调用中获取删除的重复项列表?
- windows - 在 Windows PC 上设置谷歌助手
- javascript - addEventListener 只工作一次
- python - 为什么 Tkinter 应用程序在调用退出后不关闭
- powershell - 使用 New-AzureRmServiceFabricCluster 使用 PowerShell 创建服务结构群集时出现 Azure KeyVault 访问策略异常
- java - 为什么使用 setText 后 Gtk TextBuffer onChanged 会被调用两次?
- git - 无需提交,调用 git checkout 后清理工作树