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>";

これを 1 つのサーバーでテストすると、100% の確率で動作します。返信があり、問題はありません。

メインサーバーでテストすると、何も返されず、ほとんどの場合、約 98% が空白です。コードを変更しなければ、ランダムに動作し、ランダムに停止します。私は困惑しています。

4

1 に答える 1

1

着信接続と発信接続を許可するためにファイアウォールを開いていると私が信じていたのは、発信ではなく着信のみを許可していたことが判明しました。また、resolv.conf の下の DNS エラーも解決し、正常に機能するようになりました。

于 2013-01-07T02:49:49.863 に答える