J'ai l'erreur fatale suivante lorsque j'essaie d'utiliser Curl:
PHP Fatal error: Uncaught HTTP_Request2_MessageException:
Curl error: Operation timed out after 30000 milliseconds with 0 bytes received in
/usr/share/php/HTTP/Request2/Adapter/Curl.php on line 200
Exception trace Function Location
0 HTTP_Request2_Adapter_Curl::wrapCurlError('Resource id #12')
/usr/share/php/HTTP/Request2/Adapter/Curl.php:200
1 HTTP_Request2_Adapter_Curl->sendRequest(Object(HTTP_Request2))
/usr/share/php/HTTP/Request2.php:959< in /usr/share/php/HTTP/Request2/Adapter/Curl.php on line 172
Cependant, je ne vois pas comment le résoudre au mieux. Il n'y a aucune référence à une ligne de code que j'ai écrite, mais uniquement aux modules HTTP_Request2
et Curl
. Quelle est la meilleure approche pour essayer de résoudre ce problème?
Votre boucle est expiré. Probablement l'URL que vous essayez qui nécessite plus de 30 secondes.
Si vous exécutez le script via un navigateur, définissez le set_time_limit
sur zéro pendant une durée infinie de secondes.
set_time_limit(0);
Augmentez le temps limite de l'opération de curl en utilisant cette option CURLOPT_TIMEOUT
curl_setopt($ch, CURLOPT_TIMEOUT,500); // 500 seconds
Cela peut également se produire pour une redirection infinie à partir du serveur. Pour arrêter cela, essayez d’exécuter le script avec l’emplacement suivant désactivé.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
Il arrive parfois que cette erreur apparaisse dans Joomla en raison d’un problème avec SESSION ou coockie . Cela peut être dû à un paramètre de serveur HTTPd incorrect ou à des demandes antérieures avant les requêtes http CURL ou Server
donc PHP code comme:
curl_setopt($ch, CURLOPT_URL, $url_page);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_REFERER, $url_page);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . "./cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . "./cookie.txt");
curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
if( $sc != "" ) curl_setopt($ch, CURLOPT_COOKIE, $sc);
aura besoin de remplacer par le code PHP
curl_setopt($ch, CURLOPT_URL, $url_page);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
//curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_REFERER, $url_page);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
//curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . "./cookie.txt");
//curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . "./cookie.txt");
//curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); // !!!!!!!!!!!!!
//if( $sc != "" ) curl_setopt($ch, CURLOPT_COOKIE, $sc);
Peut-être une réponse de corps comment ces options liées à "Erreur Curl: opération expiré après .."