web-dev-qa-db-ja.com

cURLリクエストのエラー:名前の検索がタイムアウトしました

ログインフォームに記入し、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.

どうしたの?それを解決するにはどうすればよいですか?

15
jabbar

私は同じ問題に遭遇しました:

  • シェルから、カールは働きました。
  • シェルから、PHPスクリプトが機能しました。
  • PHPはWebサイトにpingできませんでした。
  • DNS構成は正しかった。

Apacheを再起動した後、動作しました。とても奇妙。

11
herderwu

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

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

5
luigif

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

4
sagi