Intereting Posts
Показывать номер в качестве условного номера в «текстовой форме» с помощью класса NumberFormatter PHP? Может ли система оценки репутации быть реализована с использованием системы управления бизнес-правилами (BRMS), такой как OpenL Tablets, в PHP? как сделать разбиение на страницы в этом коде? моя таксономия – $ taxonomy.php page post not show? URL-адрес WordPress – сеансы, файлы cookie или GET с использованием разных пользовательских типов сообщений Как остановить предупреждения в парсере phpDocumentor, когда я наследую внешний класс библиотеки? Laravel 4.2 и AJAX POST – 500 Внутренняя ошибка сервера Создание RadioButton в Front end (PHP) Каково использование <<< EOD в PHP? Как добавить дополнительные метаданные в PNG? Проблемы с тайм-аутом Auth с CakePHP Рассчитать количество часов в заданный период времени между двумя датами Оптимизация Imagick annotateImage Разрыв UL-тега после 'n' раз в while-loop Получите повторные совпадения с preg_match_all ()

тайм-аут cURL при вызове страницы HTTPS со старыми сертификатами

Я пытаюсь получить XML из службы данных в моем учреждении, используя PHP и cURL (libcurl). Разработка выполняется на моей локальной машине. Это код, который eval'd в PHP является частью модуля Drupal и Transformations.

Он поддерживает SSL, как показано на рисунке:

$curl-config --features (из libcurl docs )

SSL
IPv6
libz
NTLM

Выполняется PHP-код:

 /** * Get a web file (HTML, XHTML, XML, image, etc.) from a URL. Return an * array containing the HTTP server response header fields and content. * FROM: http://bit.ly/lNIlOu */ function get_web_page( $url ) { $agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30'; //$agent = 'spider'; $options = array( CURLOPT_RETURNTRANSFER => true, // return web page if successful CURLOPT_HEADER => false, // don't return headers CURLOPT_FOLLOWLOCATION => true, // follow redirects CURLOPT_ENCODING => "", // handle all encodings CURLOPT_USERAGENT => $agent, // who am i CURLOPT_AUTOREFERER => true, // set referer on redirect CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect CURLOPT_TIMEOUT => 120, // timeout on response CURLOPT_MAXREDIRS => 10, // stop after 10 redirects CURLOPT_SSL_VERIFYPEER => false, // Disabled SSL Cert checks CURLOPT_SSL_VERIFYHOST => false, // Disable host checks ? ); $ch = curl_init( $url ); curl_setopt_array( $ch, $options ); $content = curl_exec( $ch ); $err = curl_errno( $ch ); $errmsg = curl_error( $ch ); $header = curl_getinfo( $ch ); curl_close( $ch ); $header['errno'] = $err; $header['errmsg'] = $errmsg; $header['content'] = $content; return $header; } $url = 'https://ws.admin.washington.edu/student/v4/public/section.xml?year=2011&quarter=autumn&curriculum_abbreviation=BIOL&course_number=&id=&search_by=Instructor'; $result = get_web_page($url); echo '<pre>CURL result:<br/>'; var_dump($result); echo '</pre>'; 

Снятая версия сброса $ ch:

 array(24) { ["url"]=> string(155) "https://ws.admin.washington.edu/student/v4/public/section.xml?year=2011&quarter=autumn&curriculum_abbreviation=BIOL&course_number=&id=&search_by=Instructor" ["content_type"]=> NULL ["http_code"]=> int(0) ["header_size"]=> int(0) ["request_size"]=> int(237) ... ["ssl_verify_result"]=> int(20) ["redirect_count"]=> int(0) ["total_time"]=> float(120.41427) ... ["connect_time"]=> float(0.11626) ... ["certinfo"]=> array(0) { } ["errno"]=> int(28) ["errmsg"]=> string(67) "Operation timed out after 120000 milliseconds with 0 bytes received" ["content"]=> bool(false) } 

Когда я сам посещаю сайт, он просто загружается. Я даже установил подпись агента точно так же, как и моя.

Любая помощь будет оценена по достоинству.

Для меня добавление curl_setopt($ch, CURLOPT_SSLVERSION, 3); волшебно решил проблему!

Он работает сейчас, когда я загружаю его на свой сервер. Я пытался это сделать с моего Mac OSX 10.6.7, который, похоже, блокирует порт 443, обычно используемый для протокола HTTPS. Я не мог найти способ открыть его или выяснить, почему он был заблокирован.

Но мой скрипт отлично работает за пределами моей локальной машины .

Спасибо, что помогли до сих пор.