卷曲超时和连接超时的最佳值

时间:2011-01-12 03:24:32

标签: php curl

问候每个人

我正在使用一个小型抓取引擎,并使用curl来请求来自各个网站的网页。问题是我应该建议我的connection_timeout和超时值是什么?我通常会爬行的东西会是包含大量图像和文字的页面。

5 个答案:

答案 0 :(得分:9)

cURL知道两种不同的超时 对于CURLOPT_CONNECTTIMEOUT,无论网站包含多少文本或其引用的图像有多少其他资源都无关紧要,因为这是连接超时,甚至服务器在建立连接之前也无法知道所请求页面的大小。
对于CURLOPT_TIMEOUT来说,这很重要。即使是大型页面也只需要少量数据包,但服务器可能需要更多时间来组装输出。此外,重定向和其他内容(例如代理)的数量可以显着增加响应时间。

一般来说,超时的“最佳价值”取决于您对网络和服务器的要求和条件。这些条件是变化的。因此,没有“一个最好的价值” 我建议使用相当短的超时,然后重试失败的下载。

Btw cURL不会自动下载响应中引用的资源。您必须手动执行此操作,并进一步调用curl_exec(带有新的超时)。

答案 1 :(得分:0)

最好的回应是rik的一个。

我有一个代理检查器,在我的基准测试中,我看到大多数工作代理连接的时间不到10秒。

所以我对ConnectionTimeOut和TimeOut使用10秒,但在我的情况下,你必须决定你想要使用多少时间,所以从大值开始,使用curl_getinfo查看时间基准并减少值。

注意:连接超过5或10秒的代理对我来说毫无用处,这就是我使用这些值的原因。

答案 2 :(得分:0)

是。如果您的目标是查询其他站点的代理,那么这样的级联连接将需要相当长的时间段来执行curl调用。

特别是遇到间歇性卷曲问题时,请先检查这些值。

答案 3 :(得分:0)

如果你设置得太高,那么你的脚本会很慢,因为一个关闭的网址将花费你在CURLOPT_TIMEOUT中设置的所有时间来完成处理。如果您不使用代理,则可以设置以下值

CURLOPT_TIMEOUT = 3 CURLOPT_CONNECTTIMEOUT = 1

然后你可以在以后通过失败的网址来仔细检查它们。

答案 4 :(得分:-1)

我用

     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ch, CURLOPT_TIMEOUT,60);
相关问题