- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
更新#2:我已经与我在 NOAA 的联系人确认,他们在整个 NOAA 中都存在严重的互连问题。例如,他们只从 2 个位置获取降水数据。我确定这是相关的。我让 NOAA 知道了这个话题以及你们为确定这是一个连接问题所做的工作。
更新:现在 wget 命令可以在我的本地服务器上运行,但不能在 1and1.com 服务器上运行。我想这可以解释为什么它可以在我的浏览器中运行。一定是东区的连接问题,因为你们中的一些人也遇到了同样的问题。希望这会自行解决,因为看起来我对此无能为力。
编辑:很明显我遇到的获取问题
我的问题是如何编写代码来获取文件和浏览器?
我已经使用这个命令获取外部网页近 2 年了
wget -O <my web site>/data.txt http://www.ndbc.noaa.gov/data/latest_obs/latest_obs.txt
我已经在两个不同的服务器上尝试过,结果相同,所以我确定我没有被阻止。
今天早上突然停止工作。更糟糕的是,它会让进程在服务器上运行,直到有足够的进程关闭我的帐户并且我的所有网站都出错,直到我们执行 kill
。一次一个到49
休眠过程。
我没有得到 1and1
的帮助技术支持。他们说这是我的 cron 脚本,就是上面的一行。
所以我决定使用 php 重写 get 文件。我试过 file_get_contents
.我试过curl
, fgets
以及。但是这些都不起作用,所以我尝试了 lynx
.
没有任何东西加载这个特定的 URL,但我尝试的一切在其他 url 上都可以正常工作。
但如果我只是复制 http://www.ndbc.noaa.gov/data/latest_obs/latest_obs.txt进入浏览器,没问题 - 文件会立即显示。
显然可以读取这个文件,因为浏览器正在这样做。我试过Chrome
, IE
, 和 Firefox
加载此页面时没有人遇到问题,但我在代码中尝试过的任何东西都不起作用。
我想做的是读取这个文件,然后写入本地服务器缓冲。然后我的代码可以针对各种数据请求解析它。
阅读此外部网页的可靠方法是什么?
有人建议我添加一个用户代理,所以我将代码更改为以下
function read_url($url){
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL,$url);
$output = curl_exec($ch);
if(curl_errno($ch)){
echo "<!-- curl_error($ch) -->";
}
curl_close($ch);
return $output;
}
同样,它适用于其他外部网站,但不适用于本网站。
我尝试运行 wget
手动:这是我得到的
(uiserver):u49953355:~ > wget -O <my site>/ships_data.txt http://www.ndbc.noaa.gov/data/realtime2/ship_obs.txt
--2013-11-17 15:55:21-- http://www.ndbc.noaa.gov/data/realtime2/ship_obs.txt
Resolving www.ndbc.noaa.gov... 140.90.238.27
Connecting to www.ndbc.noaa.gov|140.90.238.27|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 690872 (675K) [text/plain]
Saving to: `<my site>/ships_data.txt'
0% [ ] 1,066 --.-K/s eta 7h 14m
它只是停留在0%
注意 <my-site>
是存储我的数据的网址。我不想公布我的错误区域的地址,但它就像 mydomain/buffer/
我只是在另一台服务器(不是 1and1)上尝试了同样的事情
dad@myth_desktop:~$ wget -O ships_data.txt http://www.ndbc.noaa.gov/data/realtime2/ship_obs.txt
--13:14:32-- http://www.ndbc.noaa.gov/data/realtime2/ship_obs.txt
=> `ships_data.txt'
Resolving www.ndbc.noaa.gov... 140.90.238.27
Connecting to www.ndbc.noaa.gov|140.90.238.27|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 690,872 (675K) [text/plain]
3% [====> ] 27,046 --.--K/s ETA 34:18
卡在3%
这次。
最佳答案
您的两个 wget 命令对我都有效。
NOAA 似乎也没有阻止您的请求,因为您获得了 200 响应代码和 HTTP header (内容长度、类型等)和部分数据(1066 字节位于数据)。
这可能是您的连接(一般或专门连接到 NOAA)很慢或通过某些缓冲代理。在代理获取全部或大部分数据之前,wget 看起来连接正在失效。检索此文件是否有效:http://www.ndbc.noaa.gov/robots.txt ?
wget 的选项 --debug 也可能有助于找出问题。
无论如何,关于挂起 wget 进程,您可以使用 --timeout=60 选项来限制失败前的等待时间(http://www.gnu.org/software/wget/manual/wget.html)。
wget -O ships_data.txt http://www.ndbc.noaa.gov/data/realtime2/ship_obs.txt --timeout=10
如果你想设置一个用户代理(就像你在 PHP 脚本中所做的那样),你可以使用“--user-agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0 .3705; .NET CLR 1.1.4322)”选项。
wget -O ships_data.txt http://www.ndbc.noaa.gov/data/realtime2/ship_obs.txt "--user-agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)"
关于 curl 与 wget,您可以将 wget 命令替换为 curl 命令(而不是在 PHP 中执行):
curl -o ships_data.txt http://www.ndbc.noaa.gov/data/realtime2/ship_obs.txt --user-agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)"
安德烈
关于php - 正在工作的 cron 作业突然停止,无法读取外部 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035829/
我通过 spring ioc 编写了一些 Rest 应用程序。但我无法解决这个问题。这是我的异常(exception): org.springframework.beans.factory.BeanC
我对 TestNG、Spring 框架等完全陌生,我正在尝试使用注释 @Value通过 @Configuration 访问配置文件注释。 我在这里想要实现的目标是让控制台从配置文件中写出“hi”,通过
为此工作了几个小时。我完全被难住了。 这是 CS113 的实验室。 如果用户在程序(二进制计算器)结束时选择继续,我们需要使用 goto 语句来到达程序的顶部。 但是,我们还需要释放所有分配的内存。
我正在尝试使用 ffmpeg 库构建一个小的 C 程序。但是我什至无法使用 avformat_open_input() 打开音频文件设置检查错误代码的函数后,我得到以下输出: Error code:
使用 Spring Initializer 创建一个简单的 Spring boot。我只在可用选项下选择 DevTools。 创建项目后,无需对其进行任何更改,即可正常运行程序。 现在,当我尝试在项目
所以我只是在 Mac OS X 中通过 brew 安装了 qt。但是它无法链接它。当我尝试运行 brew link qt 或 brew link --overwrite qt 我得到以下信息: ton
我在提交和 pull 时遇到了问题:在提交的 IDE 中,我看到: warning not all local changes may be shown due to an error: unable
我跑 man gcc | grep "-L" 我明白了 Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more inf
我有一段代码,旨在接收任何 URL 并将其从网络上撕下来。到目前为止,它运行良好,直到有人给了它这个 URL: http://www.aspensurgical.com/static/images/a
在过去的 5 个小时里,我一直在尝试在我的服务器上设置 WireGuard,但在完成所有设置后,我无法 ping IP 或解析域。 下面是服务器配置 [Interface] Address = 10.
我正在尝试在 GitLab 中 fork 我的一个私有(private)项目,但是当我按下 fork 按钮时,我会收到以下信息: No available namespaces to fork the
我这里遇到了一些问题。我是 node.js 和 Rest API 的新手,但我正在尝试自学。我制作了 REST API,使用 MongoDB 与我的数据库进行通信,我使用 Postman 来测试我的路
下面的代码在控制台中给出以下消息: Uncaught DOMException: Failed to execute 'appendChild' on 'Node': The new child el
我正在尝试调用一个新端点来显示数据,我意识到在上一组有效的数据中,它在数据周围用一对额外的“[]”括号进行控制台,我认为这就是问题是,而新端点不会以我使用数据的方式产生它! 这是 NgFor 失败的原
我正在尝试将我的 Symfony2 应用程序部署到我的 Azure Web 应用程序,但遇到了一些麻烦。 推送到远程时,我在终端中收到以下消息 remote: Updating branch 'mas
Minikube已启动并正在运行,没有任何错误,但是我无法 curl IP。我在这里遵循:https://docs.traefik.io/user-guide/kubernetes/,似乎没有提到关闭
每当我尝试docker组成任何项目时,都会出现以下错误。 我尝试过有和没有sudo 我在这台机器上只有这个问题。我可以在Mac和Amazon WorkSpace上运行相同的容器。 (myslabs)
我正在尝试 pip install stanza 并收到此消息: ERROR: No matching distribution found for torch>=1.3.0 (from stanza
DNS 解析看起来不错,但我无法 ping 我的服务。可能是什么原因? 来自集群中的另一个 Pod: $ ping backend PING backend.default.svc.cluster.l
我正在使用Hibernate 4 + Spring MVC 4当我开始 Apache Tomcat Server 8我收到此错误: Error creating bean with name 'wel
我是一名优秀的程序员,十分优秀!