Проблемы с загрузкой RSS-каналов с помощью PHP SimpleXML: время ожидания соединения и пустые каналы

Я могу успешно проанализировать многие RSS-каналы с помощью PHP SimpleXML. Есть два конкретных канала, которые мне трудно читать с помощью PHP SimpleXML. Оба эти канала хорошо отображаются в моем браузере.

Канал Bloomberg, похоже, не возвращает никаких данных:

https://www.bloomberg.com/politics/feeds/site.xml

Фиды тем по вопросам здравоохранения имеют время ожидания соединения:

https://www.healthaffairs.org/action/showFeed?ui=0&миль = 3h0nmj&Тип = поиск&кормить = Новости&запрос =% 26ConceptID% 3D932% 26content% 3DarticlesChapters% 26target% 3Dtopic

Я пробовал разные URL-кодировки с делами здравоохранения и установки различных параметров контекста потока с помощью libxml_set_streams_context. Вот пример кода, который я использую, чтобы открыть эти соединения.

$opts = array( 'http' => array( 'timeout' => 10 ) );
$context = stream_context_create( $opts );
libxml_set_streams_context( $context );
libxml_use_internal_errors( true );
$rss = simplexml_load_file( $feed );

$error_msg = '';
if ( $rss === false ) {
foreach( libxml_get_errors() as $error ) {
$error_msg .= ' [' . $error->message . ']';
}
libxml_clear_errors();
}

// ...feed parsing

Керл, кажется, возвращает HTML-страницу с вопросом, являюсь ли я роботом для Bloomberg. Для новостных лент по здравоохранению curl получает тайм-аут. Я пробовал разные варианты с curl, включая проверку, является ли это gzip-контентом.

// create curl resource
$ch = curl_init();

// set url
curl_setopt($ch, CURLOPT_URL, $feed);

//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_FAILONERROR, 1 );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt($ch, CURLOPT_TIMEOUT, 15 );
curl_setopt($ch, CURLOPT_ENCODING, "gzip" );

// $output contains the output string
$debug_output .= '[RSS FEED: ' . $feed . ']' . "\n";
$debug_output .= curl_exec( $ch );

// close curl resource to free up system resources
curl_close($ch);

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]