У меня есть следующая фатальная ошибка при попытке использовать 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
Тем не менее, я не вижу, как лучше отладить его. Нет никакой ссылки на любую строку кода, которую я написал, только модули HTTP_Request2
и Curl
. Каков наилучший подход, чтобы попытаться решить эту проблему?
Ваш завиток истекает. Вероятно, URL-адрес, который вы пытаетесь, требует больше, чем 30 секунд.
Если вы запускаете скрипт через браузер, установите set_time_limit
равным нулю в течение бесконечных секунд.
set_time_limit(0);
Увеличьте ограничение времени работы завитка, используя эту опцию CURLOPT_TIMEOUT
curl_setopt($ch, CURLOPT_TIMEOUT,500); // 500 seconds
Это также может случиться для бесконечного перенаправления с сервера. Чтобы остановить эту попытку, запустите сценарий с отключенным местоположением.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
Некоторое время эта ошибка в Joomla появляется, потому что что-то неправильно с SESSION или cookeie. Это может быть связано с неправильным настройкой HTTP-сервера или с некоторыми из них перед запросами HTTP или CURL
поэтому 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, 1); if( $sc != "" ) curl_setopt($ch, CURLOPT_COOKIE, $sc);
потребуется заменить на 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);
Может быть, кто-то ответит, как эти параметры связаны с «Ошибка скручивания: операция истекает после ..»