首页 > 编程语言 >PHP响应SSE

PHP响应SSE

时间:2024-04-17 09:47:32浏览次数:28  
标签:echo 响应 flush SSE PHP data event

使用PHP创建一个SSE响应来与客户端保持连接

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header('Connection: keep-alive');

// 模拟数据更新(实际应用中可能是从数据库查询、监控系统获取等)
function generateEventData() {
    $data = [
        'time' => date('Y-m-d H:i:s'),
        'message' => 'This is a server-sent event update.',
    ];
    return 'data: '.json_encode($data)."\n\n";
}

// 无限循环,定期发送更新
while (true) {
    echo generateEventData();
    flush(); // 强制输出缓冲区内容
    ob_flush(); // 清空输出缓冲区
    sleep(5); // 每5秒发送一次更新(可根据实际需求调整间隔)
}

// 如果需要终止连接,可以发送以下注释行并关闭连接
// echo ':event: close';
// exit;
?>
    

调用第三方接口方式

<?php
    header('Content-Type: text/event-stream');
    header('Cache-Control: no-cache');
    header('X-Accel-Buffering: no');
    header('Connection: keep-alive');
    set_time_limit(0);
    ob_end_clean();
    ob_implicit_flush(1);
    $url = "";
	$headers = [];
	$params = "";
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_TIMEOUT, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $data) {
        echo $data;
        return strlen($data);
    });
    curl_exec($ch);
    curl_close($ch);

标签:echo,响应,flush,SSE,PHP,data,event
From: https://www.cnblogs.com/yanweifeng/p/18139827

相关文章

  • 借助Messenger实现ViewModel间通信(communitytoolkit-mvvm)
    两个VM:MainViewModel,TestViewModel需求:TestViewModel中发消息到MainViewModel处理写法1:  1.MainViewModel中注册消息处理函数WeakReferenceMessenger.Default.Register<string,string>(this,"AddItem",DoMessage)  2.参数2用于校验,参数3为消息处理函数  3.TestViewM......
  • php读取xml
    截图代码直接抄的:https://www.w3schools.com/php/php_ajax_xml.asp动动手做练习,几番调试,添加了右边绿色字体的注释。平素写码都不带注释的,写博是要分享的,就装装样子。初始学习xml是04年夏,捧一本买回来外加光盘的厚书翻了半本,仅就记得xml文件的大概结构,十来年了xml作为数据传输......
  • python (63):dataclasses 简单示例
    dataclasses简单示例:importtransformersfromdataclassesimportdataclass,fieldimportargparse@dataclassclassPerson():age:int=field(default=10)Name:str=field(default="Tom")high:int=field(default=185,......
  • iOS中使用text/event-stream数据流实现后端SSE数据推送
    最近在做通过http请求实现后端一条一条一条消息推送,达到gpt那种搜索的展示的效果客户端这边设置很简单,只需要设置请求头[request addValue:@"text/event-stream" forHTTPHeaderField:@"Accept"];项目网络库用的AFN,经调研发现AFN不支持这个请求,最后选择了系统的NSURLSession......
  • PHP strlen() 和mb_strlen()函数
    <?php   //测试时文件的编码方式要是UTF8   $str='中文a字1符';   echostrlen($str).'<br>';//14   echomb_strlen($str,'utf8').'<br>';//6   echomb_strlen($str,'gbk').'<br>';//8   echomb_s......
  • SpringBoot+Redis启动报错Unsatisfied dependency expressed through method 'stringR
    SpringBoot+Redis启动报错Applicationrunfailedorg.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbeanwithname'redisTool':Unsatisfieddependencyexpressedthroughfield'stringRedisTemplate';nestedexcep......
  • vue2响应式原理
    vue2响应式原理classDep{constructor(){//依赖保存器this.subscribers=newSet();}//收集依赖depend=()=>{if(activeEffect){this.subscribers.add(activeEffect);}};//通知收集的依赖notify=()=>{this.......
  • PHP Allowed memory size of 134217728 bytes exhausted (tried to allocate 10489856
    问题返回的json数据太大导致Allowedmemorysizeof134217728bytesexhausted(triedtoallocate10489856bytes)解决方案修改php.ini的memory_limit修改php.ini中的memory_limit数值,默认128M,不够用可以改成256M或512M宝塔中修改点击“服务”>重启或重载配置......
  • 18、应急响应
    1.应急响应1.1.国内相关组织https://www.cert.org.cnhttps://cnvd.org.cnhttps://www.anva.org.cnhttps://cverc.org.cn1.2.应急响应生命周期1.3.应急响应流程1.3.1.准备阶段分析资产风险明确信息系统网络与系统架构明确信息系统的管理人员明确信息系统的保护要求......
  • php特性
    这里是根据ctfshowphp特性做的题积累的知识1.preg_match()函数可以利用数组绕过,因为preg_match只能处理字符串,所以当传入的subject是数组时会返回false2.intval()函数!!!如果是字符串,它返回的内容取决于字符串最左侧的字符。如intval(‘11a0’)=11。所有输入的内容加上一个字母......