Подтвердить что ты не робот

Ошибка в запросе 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.

В чем проблема? что я могу сделать для его решения?

4b9b3361

Ответ 1

Я столкнулся с той же проблемой:

  • Из оболочки, завиток работал.
  • От оболочки работает PHP script.
  • PHP не смог выполнить ping-сайт.
  • Конфигурация DNS была правильной.

После перезагрузки Apache он работал. Настолько странно.

Ответ 2

Это может быть проблема timeout. Попробуйте настроить таймаут соединения:

$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,
    ),
);

Если вы обнаружите, что это проблема с тайм-аутом, я бы не предложил слишком сильно увеличить параметр таймаута, а скорее сделать цикл для с количеством попыток.

Ответ 3

Это означает, что ваш DNS-сервер не смог своевременно вернуть ответ. Проверьте конфигурацию DNS (например,/etc/resolv.conf в Linux) и убедитесь, что они живы и функциональны. Также попробуйте выполнить ping-хост в URL-адресе с одного и того же сегмента, чтобы получить представление о том, существует ли проблема только в PHP или в любом приложении, запущенном на сервере (скорее).