cURL请求出错:名称查找超时

jab*_*bar 15 php dns curl zend-framework zend-http-client

我写了一些填写登录表单的代码,并通过post方法提交.喜欢:

    $config = array(
        'adapter' => 'Zend_Http_Client_Adapter_Curl',
    );      

    $this->siteObj = new Zend_Http_Client('http://example.com', $config);
    $this->siteObj->setCookieJar();
    $this->siteObj->setUri('http://example.com/login');
    $this->siteObj->setParameterPost( 'data[User][name]', 'user' );
    $this->siteObj->setParameterPost( 'data[User][password]', 'password' );
    $response = $this->siteObj->request('POST');
Run Code Online (Sandbox Code Playgroud)

它的工作正常,但有时会发生此错误:

Error in cURL request: name lookup timed out

Error: An Internal Error Has Occurred.
Run Code Online (Sandbox Code Playgroud)

有什么问题?我能做些什么来解决它?

小智 11

我遇到了同样的问题:

  • 从外壳,卷曲工作.
  • 从shell开始,PHP脚本起作用了.
  • PHP无法ping通网站.
  • DNS配置是对的.

重新启动Apache后,它工作正常.这么奇怪.


lui*_*gif 5

这可能是超时问题。尝试调整连接超时:

$config = array(
  'adapter' => 'Zend_Http_Client_Adapter_Curl',
  'timeout' => 100
);
Run Code Online (Sandbox Code Playgroud)

您还可以设置单个卷曲选项:

$config = array(
    'adapter'   => 'Zend_Http_Client_Adapter_Curl',
    'curloptions' => array(
        CURLOPT_USERAGENT      => 'Zend_Curl_Adapter',
        CURLOPT_HEADER         => 0,
        CURLOPT_VERBOSE        => 0,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_TIMEOUT        => 10,
        CURLOPT_SSL_VERIFYPEER => false,
    ),
);
Run Code Online (Sandbox Code Playgroud)

如果您发现这是超时问题,则我不建议增加太多的超时参数,而建议进行多次重试的for循环。


sag*_*agi 4

这意味着您的DNS服务器未能及时返回响应。检查您的 DNS 配置(例如 Linux 上的 /etc/resolv.conf),并确保它们处于活动状态并正常运行。还可以尝试从同一服务器对 URL 中的主机执行 ping 操作,以了解问题是否仅存在于 PHP 中,或者是否存在于服务器上运行的任何应用程序中(更有可能)。