14

ログインフォームに記入し、ポストメソッドで送信するコードをいくつか書きました。お気に入り:

    $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.

どうしたの?それを解決するために私は何ができますか?

4

3 に答える 3

5

タイムアウトの問題である可能性があります。接続タイムアウトを調整してみてください。

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

単一のカールオプションを設定することもできます。

$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ループを作成することをお勧めします。

于 2012-11-03T12:34:58.947 に答える
4

これは、DNS サーバーが時間内に応答を返すことができなかったことを意味します。DNS 構成 (Linux の /etc/resolv.conf など) を確認し、それらが有効で機能していることを確認します。また、同じサーバーから URL のホストに ping を実行して、問題が PHP のみにあるのか、それともサーバー上で実行されているアプリケーションにあるのか (より可能性が高い) を調べてみてください。

于 2012-10-31T08:12:37.120 に答える