2012-05-08 74 views
3

我想索引许多网页的hundrets。CURL失败后,许多运行说“无法建立连接”或“连接()超时”

在短期

  1. 使用一个cron作业
  2. 获取一些(大约只有15)最少最近更新的URL
  3. 查询论文网址使用curl调用PHP脚本

问题

在开发中一切都很顺利。但是当我开始索引更多的测试页时,CURL在一些运行后拒绝工作。它不会从远程服务器获取任何数据。

错误消息

这些错误CURL已打印出来(当然不是在一次)

  1. 无法连接到主机
  2. 操作超时后60000毫秒与0字节接收

我正在使用V-Server,并尝试使用Firefox或wget连接到远程服务器。也没什么。但是,从本地机器连接到该远程服务器时,一切正常。

等待几个小时,它再次适用于一些运行。

对我来说,它似乎是一个远程服务器或DDOS保护或类似的问题,你们怎么看?

+0

也查看http错误代码 –

+0

发生故障时,http状态代码始终为0 – Robert

+0

通过wget/FF连接与从本地计算机进行连接有什么意义?有什么不同? – petr

回答

1

当您发送太多的请求时,您应该使用代理服务器,因为您的IP可以被网站阻止他们的DDOS保护或类似的设置。

这里有出头要注意:(我用什么刮的网站DATAS)

1.使用代理服务器。

2.使用随机用户代理

3.Random查阅情况

4.Random延迟crons。

5.Random请求之间的延迟。

我会做的是让脚本永远运行,并在两者之间增加睡眠。

ignore_user_abort(1); 
set_time_limit(0); 

只要触发它与访问一秒的网址,它将永远运行。

1

脚本运行的频率如何?它确实可能会触发一些类似DOS的保护。我建议实施一些随机延迟,以使请求看起来延迟一段时间,以使它们看起来更“自然”

+0

脚本每分钟运行一次,我已将其更改为5分钟。每运行一次,它就会发送5到20个请求。 – Robert

+0

我实现了一个延迟:每次请求之间随机地从1秒到5秒。你认为,这太少了? – Robert

+0

看起来很好 - 每5分钟有20个请求应该没问题 – petr

相关问题