如何使用php获取服务器发送事件的实时流数据?

如何使用php获取服务器发送事件的实时流数据?,php,curl,server-sent-events,Php,Curl,Server Sent Events,您好,我正在尝试使用php的服务器发送事件(SSE),我有一个https url,可以从中获取实时流数据。下面是我在无限循环中尝试的脚本 PHP: 在服务器进行实时更新时,我无法在我的终端获取数据 我使用下面的命令在命令提示符下检查了直播 卷曲 首先,最好使用PHP的curl函数实现这一点。请参阅以下问题的各种答案: 如果您坚持使用fopen(),您可能需要为SSL设置上下文,并且可能需要安装一些证书。请参阅(并注意有关已接受答案的安全警告) 最后,您的while(1)循环是围绕fopen()的

您好,我正在尝试使用php的服务器发送事件(SSE),我有一个https url,可以从中获取实时流数据。下面是我在无限循环中尝试的脚本

PHP:

在服务器进行实时更新时,我无法在我的终端获取数据

我使用下面的命令在命令提示符下检查了直播

卷曲


首先,最好使用PHP的curl函数实现这一点。请参阅以下问题的各种答案:

如果您坚持使用
fopen()
,您可能需要为SSL设置上下文,并且可能需要安装一些证书。请参阅(并注意有关已接受答案的安全警告)

最后,您的while(1)循环是围绕fopen()的(在相对罕见的故障后重新启动是可以的),但实际上您希望它在内部。以下是您的代码,仅做了少量更改,以显示:

<?php
    while(1)
    {  
        $get_stream_data = fopen('https://api.xyz.com:8100/update-stream/connect', 'r');

        if($get_stream_data)while(1)
        {  
            $stream_data      =  stream_get_contents($get_stream_data);            
            $save_stream_data =  getStreamingData($stream_data);

            if($save_stream_data == true)
            {               
                continue;                
            }
            sleep(1);
        } 
      else
        {              
            sleep(1);
            continue;            
        }
    }  

Warning: fopen(https://api.xyz.com:8100/update-stream/connect): failed to open stream: Connection timed out in /home/public_html/get_stream_data/index.php on line 4   
  curl --get 'https://api.xyz.com:8100/update-stream/connect' --verbose
<?php
    while(1)
    {  
        $get_stream_data = fopen('https://api.xyz.com:8100/update-stream/connect', 'r');

        if($get_stream_data)while(1)
        {  
            $stream_data      =  stream_get_contents($get_stream_data);            
            $save_stream_data =  getStreamingData($stream_data);

            if($save_stream_data == true)
            {               
                continue;                
            }
            sleep(1);
        } 
      else
        {              
            sleep(1);
            continue;            
        }
    }