У меня есть сценарий SSE, который читает поток новостей с удаленного сервера. Этот удаленный сервер обслуживает все выходные данные взамен. Мой сценарий работает нормально на других моих серверах и даже на локальных компьютерах с использованием localhosts.
Однако, когда я использую тот же сценарий для моего нового сервера, он не работает и продолжает загружаться.
НОВЫЕ ДАННЫЕ СЕРВЕРА, ГДЕ МОЙ КОД SSE НЕ РАБОТАЕТ
- cURL нормально работает на новом сервере, я проверил, выполнив вызов без sse
- Новый сервер это CentOS 8
- Apache / 2.4.37
- PHP Версия 7.4.2 и работает нормально
- С SSL нет проблем, но только для информации SSL установлен
Ниже приведен мой код, который отлично работает для всех моих серверов и локальных хостов.
Примечание: Я заменил имя пользователя, пароль и URL удаленного сервера на фиктивный. Но я использую тот же сценарий для нового сервера со всеми правильными деталями.
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$gwuser = "USERNAME";
$gwpass = "PASSWORD";
if(!empty($gwuser) && !empty($gwpass)){
$url = 'https://example.com/gateway/stream';
ini_set('output_buffering', 'off');
ini_set('zlib.output_compression',false);
ini_set('implicit_flush',true);
while (@ob_end_flush());
ob_implicit_flush(true);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERPWD, $gwuser . ':' . $gwpass);
$error = 0;
//This while loop is only for server timeout after 5 minutes
while(true) {
$result = curl_exec($ch);
}
}
?>
Обратите внимание, что нормальный sse работает, когда я могу непрерывно печатать текущее время сервера, поэтому я сомневаюсь, что он не работает во время выполнения cURL звонок на удаленный сервер. Также на удаленном сервере не включен брандмауэр или фильтр уровня домена.
Любая помощь или предложения приветствуются. Спасибо * * 1030