2012-12-13 56 views
1

我的PHP脚本使用http_post_fields()向另一个服务器发出发布请求。 下面是代码示例:http_post_fields()无法解析主机名

$g = http_post_fields("http://mysite.com", $some_array); 

虽然脚本偶尔的工作,我经常会收到这样的错误:

http_post_fields() [function.http-post-fields]: couldn't resolve host name; name lookup timed out 

现在我已经尝试了各种HTTP地址的功能,它们都导致这个错误。 有谁知道我的麻烦来源是什么?

+0

听起来与您的网络服务器的DNS相关的问题。你有什么样的服务器环境? – jtheman

+0

CentOS Linux服务器。 – GRY

+0

间歇性DNS故障可能是重载路由器丢弃UDP数据包,或者可能是一个太大的响应,导致TCP连接被使用,而不是在某处的防火墙处被阻塞。 –

回答

0

感谢所有的输入Kasun。最后,我厌倦了这个PECL库(其中定义了http_post_fields),我用cURL代替。我要在这里达到的目标是要求从一台服务器到另一台服务器的安全票证。当然,现在我正在使用cURL,整个模块工作顺利。再次感谢。

1

如果你有ssh访问,请尝试在外壳ping mysite.com这个命令,看看你得到任何回应

可以有防火墙/代理服务器配置,以防止从服务器发送POST请求

试试这个,检查域名解析为IP。

用的HTTPRequest
<?php 
$ip = gethostbyname('www.example.com'); 

echo $ip; 
?> 

实施例,这将回声状态码

<?php 
$r = new HttpRequest('http://www.example.com/', HttpRequest::METH_POST); 
$r->addPostFields(array('param1' => 'value')); 

try { 
    $http_req->send(); 
} catch (HttpException $ex) { 

} 

$response_code = $http_req->getResponseCode(); 
echo $response_code; 
?> 
+0

好的。 SSH到服务器ping远程服务器。 0%损失。他们可以沟通。我将你的函数复制到我的脚本中,并将它作为参数传递给目标服务器和端口 - 总体成功。 – GRY

+0

*编辑 - 通信成功,但我的原始脚本中的函数调用仍然失败。 – GRY

+0

请尝试更新的测试代码,并检查您是否接受IP – Kasun