如何使用php获取服务器发送事件的实时流数据?
您好,我正在尝试使用php的服务器发送事件(SSE),我有一个https url,可以从中获取实时流数据。下面是我在无限循环中尝试的脚本 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的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;
}
}