我写了一些填写登录表单并通过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');
它的工作正常,但有时会发生此错误:
Error in cURL request: name lookup timed out
Error: An Internal Error Has Occurred.
问题是什么?我能做些什么来解决它?
答案 0 :(得分:11)
我遇到了同样的问题:
重新启动Apache后,它运行良好。太奇怪了。
答案 1 :(得分:4)
这意味着您的DNS服务器无法及时返回响应。检查您的DNS配置(例如Linux上的/etc/resolv.conf),并确保它们存活且功能正常。还尝试在同一服务器的URL中ping主机,以了解问题是仅在PHP中还是在服务器上运行的任何应用程序(更有可能)。
答案 2 :(得分:4)
可能是超时问题。 尝试调整连接超时:
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Curl',
'timeout' => 100
);
您还可以设置单个 curl 选项:
$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,
),
);
如果您发现这是一个超时问题,我建议不要过多地增加超时参数,而是要通过重试次数来设置 for 循环。