PHP /卷曲:namelookup_time / DNS请求放缓(PHP/curl: namelo

2019-06-25 08:50发布

编辑:原因找到部分 - 见底部。

我在做从PHP标准卷曲电话。 然而,似乎是在名称解析过程挂断。 在我的OSX箱,namelookup_time为1秒以上持续,这和其他查询到同一子网。 在我的子网做同样的查询Linux机器上有其他子网0.02秒的响应,所以这是我的箱子有问题。

这是一个问题,因为我们的应用程序,使许多调用该子网建立一个页面,所以秒积少成多。

我curl_getinfo响应(URL剪掉了)

array
  'url' => string ' < SNIPPED > '... (length=1449)
  'content_type' => string 'text/plain; charset=utf-8' (length=25)
  'http_code' => int 200
  'header_size' => int 227
  'request_size' => int 1480
  'filetime' => int -1
  'ssl_verify_result' => int 0
  'redirect_count' => int 0
  'total_time' => float 1.165444
  'namelookup_time' => float 1.001272
  'connect_time' => float 1.017765
  'pretransfer_time' => float 1.017781
  'size_upload' => float 0
  'size_download' => float 92562
  'speed_download' => float 79422
  'speed_upload' => float 0
  'download_content_length' => float 92562
  'upload_content_length' => float 0
  'starttransfer_time' => float 1.043094
  'redirect_time' => float 0
  'certinfo' => 
    array
      empty
  'redirect_url' => string '' (length=0)

我有一个怀疑,名称查找滞后是由于IPv6的,所以我尝试了以下内容:

1)遵循的方向这里关闭IPv6在OSX上,包括重新启动。 我将IPv6设置的所有实例INACTIVE之类的文章建议。

http://community.centrify.com/t5/Express-for-Mac-Tips-and-Tricks/Using-local-domains-with-Centrify-Directcontrol-on-the-Mac/ba-p/3724

我证实,我的Mac没有在这里对IPv6的支持: http://ipv6test.google.com/ 。

2)重建与PHP --disable的IPv6。

PHP -i所示:支持IPv6 =>禁用

虽然在卷翘部,它说:“IPv6的=>是”,我不知道如何通过手术将其关闭。

3)运行这个卷曲调用之前:

curl_setopt($ C,CURLOPT_IPRESOLVE,CURL_IPRESOLVE_V4);

不幸的是,没有上述步骤的工作 - 我仍然得到1秒+名称解析倍。 没有人有任何的故障诊断建议,或更好,但灵丹妙药? :)

(注 - 我GOOGLE和SO'ed这个问题,但都无济于事。)

编辑:回答以下ckhan的问题:
1)I得到相同的1秒+ namelookup_time使用IP地址或FQDN一个:

'url' => string 'HTTP://172.19.105.171:8070  <SNIPPED> '... (length=1439)
...
'namelookup_time' => float 1.001309

2)命令行客户机不具有同样的问题:

# url.txt has the same url as the above curl call
time cat url.txt |xargs curl
<... response output ...>
real  0m0.053s
user  0m0.009s
sys 0m0.008s

3)挖掘似乎已经没有问题,访问服务器。

dig 172.19.105.171
...
;; Query time: 77 msec
...

我的环境:
PHP 5.3.8
OSX 10.7.3

部分解决方案

应用程序代码是使用curl_multi_select,其具有1秒的默认超时。 更改此延迟0.00005秒使得调用返回快得多。 所以,这是什么造成的延迟。 不过,我还不知道这是为什么在Linux VS OSX或PHP / libcurl中的特殊味道,我已经建立(5.3.8)不同。

Answer 1:

PHP的应用程序代码是使用curl_multi_select,其具有1秒的默认超时。 更改此延迟0.00005秒使得调用返回快得多。 所以,这是什么造成的延迟。 不过,我还不知道这是为什么在Linux VS OSX或PHP / libcurl中的特殊味道,我已经建立(5.3.8)不同。

我要开一个不同的,所以问题来尝试解决该问题curl_multi_select。



Answer 2:

您可以在/ etc / hosts文件,那么PHP卷曲不需要查找DNS查找IP地址,固定你的域名。 这为我工作。



文章来源: PHP/curl: namelookup_time/dns slowing requests
标签: php curl dns ipv6