14 votes

Erreur dans la requête cURL : la recherche de nom a dépassé le temps imparti

J'ai écrit un code qui remplit un formulaire de connexion et le soumet via la méthode post. Comme.. :

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

Il fonctionne bien, mais cette erreur se produit parfois :

Error in cURL request: name lookup timed out

Error: An Internal Error Has Occurred.

Quel est le problème ? Que puis-je faire pour le résoudre ?

11voto

herderwu Points 21

J'ai rencontré le même problème :

  • À partir de la coquille, le curl a fonctionné.
  • Depuis le shell, le script PHP script a fonctionné.
  • PHP n'a pas pu faire de ping sur le site web.
  • La configuration DNS était correcte.

Après avoir redémarré Apache, cela a fonctionné. C'est étrange.

5voto

luigif Points 514

Il peut s'agir d'un délai d'attente problème. Essayez d'ajuster le délai de connexion :

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

vous pouvez également définir des boucler options :

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

Si vous découvrez qu'il s'agit d'un problème de délai d'attente, je ne vous suggérerais pas d'augmenter trop fortement le paramètre de délai d'attente, mais plutôt de faire un pour avec un certain nombre de tentatives.

4voto

sagi Points 3157

Cela signifie que votre serveur DNS n'a pas renvoyé de réponse à temps. Vérifiez votre configuration DNS (par exemple, /etc/resolv.conf sous Linux), et assurez-vous qu'ils sont vivants et fonctionnels. Essayez également d'envoyer un ping à l'hôte indiqué dans l'URL à partir du même serveur pour savoir si le problème vient de PHP ou d'une autre application fonctionnant sur le serveur (plus probable).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X