2

这是我的代码示例:

function xmlPostStore($post_xml, $url, $port) {
    $ch = curl_init(); // initialize curl handle
    curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
    curl_setopt($ch, CURLOPT_FAILONERROR, 1); // Fail on errors
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
    curl_setopt($ch, CURLOPT_PORT, $port); //Set the port number
    curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after 15s
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_xml); // add POST fields
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

我要发送的内容:

$XML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>
        <SendConfig>
            <Request>
                <key>passphrase</key>
            </Request>
        </SendConfig>";

$reply = xmlPostStore($XML, "http://www.urlhere.com/test.php", "80");

test.php 只是一个简单的 XML 返回:

echo "<?xml version='1.0' encoding='utf-8'?>
<response>
    <config>
        <test>it works</test>
    </config>
</response>";

当我在一台服务器上测试它时,它 100% 的时间都有效。我收到回复,没有问题。

当我在我们的主服务器上测试它时,它没有返回任何东西,大多数时候,大约 98% 的时间它是空白的。无需任何代码更改,它将随机工作并随机停止。我难住了。

4

1 回答 1

1

原来我认为打开防火墙以允许传入和传出连接的只是允许传入,而不是传出。我还在 resolv.conf 下解决了 DNS 错误,现在一切正常。

于 2013-01-07T02:49:49.863 回答