/**

* 本程序用来实现 Server-Sent Events (服务器推送)功能。

* 要在 IE8+/Edge 浏览器中使用这项技术,你需要在页面中引入 Yaffle/EventSource 项目

* 源码地址:https://github.com/Yaffle/EventSource

* 你需要在 URL 查询参数中设置 obj={module}&act={method},来调用 ModPHP 的功能,

* 同时还可以提供一个 sleep={seconds} 参数来设置程序的休眠时间,默认为 3。

*/

include 'mod.php'; //引入 ModPHP 程序入口

// 设置头部信息

header("Content-Type: text/event-stream");

header("Cache-Control: no-cache");

header("Access-Control-Allow-Origin: *"); //允许跨域访问,要在 IE8/IE9 中使用 SSE,必须允许跨域

//Yaffle/EventSource 设置,上一次事件 ID

$lastEventId = floatval(isset($_SERVER["HTTP_LAST_EVENT_ID"]) ? $_SERVER["HTTP_LAST_EVENT_ID"] : 0);

if($lastEventId == 0){

$lastEventId = floatval(isset($_GET["lastEventId"]) ? $_GET["lastEventId"] : 0);

}

$obj = isset($_GET['obj']) ? strtolower($_GET['obj']) : ''; //对象

$act = isset($_GET['act']) ? $_GET['act'] : ''; //操作

$sleep = !empty($_GET['sleep']) ? (int)$_GET['sleep'] : 3; //休眠时间

//判断请求是否合法

if(!$obj || !$act || ($obj != 'mod' && !is_subclass_of($obj, 'mod')) || (!method_exists($obj, $act) && !is_callable(hooks($obj.'.'.$act))) || in_array($obj.'::'.strtolower($act), ${'DENIES'.INIT_TIME})){

report_403(lang('mod.permissionDenied')); //请求不合法则报告 403 错误

exit();

}

do_hooks('mod.client.call.sse'); //执行挂钩回调函数

echo ":" . str_repeat(" ", 2048) . "\n"; // 2 KB padding for IE

echo "retry: 2000\n";

//事件流

$id = $lastEventId;

$max = $i + 100; //最多执行 100 次后要求客户端重新连接

while (++$id < $max && !connection_aborted()) {

$result = $obj::$act($_GET);

echo "id: " . $id . "\n";

echo "data: " . json_encode($result) . "\n\n"; //输出消息到客户端

error(null); //重置 ModPHP 错误信息

@ob_flush();

flush(); //将内容刷出到客户端

sleep($sleep); //暂停程序

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

sse php,sse.php · Gitee 极速下载/modphp - Gitee.com相关推荐

  1. php quick,Gitee 极速下载

    [QuickPHP 简介] QuickPHP 是新一代极速,强大,全面的PHP系统开源开发框架,它结合业界各著名框架的优点, 以具体项目经验为基础开发而成,适合各种层次的系统及各种水平的开发者应用. ...

  2. 【数据集下载神器】体验1000+优质数据集极速下载

    在一个合格模型的诞生过程中,繁杂的数据收集与处理工作往往给算法工程师带来了低效的工作体验. ▲一个模型的诞...生... 好的数据,对模型训练至关重要.自己做数据,即昂贵又费时费力:但是,使用现成的数 ...

  3. netkeeper客户端_星空极速下载-NetKeeper官方版下载[电脑版]-华军软件园

    NetKeeper官方版 NetKeeper官方版是款经常在校园中使用的网络共享工具.星空极速可以实现在不影响既有网路架构及运作的情形下,实时分析网路上封包等功能.NetKeeper还集成中国电信自营 ...

  4. QQ隐藏福利一------------------------文件极速下载

    你是否还在为QQ群里的一个大型文件下载速度而烦恼,看这里,这个信息将解放你的下载速度,实现极速下载QQ大型文件. 有用的话小伙伴们不要忘记点个赞哦!!!

  5. 英雄联盟极速下载提取下载地址

    英雄联盟,官方的极速下载速度太不给力了.提取内部的下载地址使用迅雷下载,速度杠杠的! 01.在LOL官网下载最新的极速下载 02.使用好压右键打开 03.找到config.ini文件提取下载地址 例如 ...

  6. 使用Speedpan使用百度网盘极速下载方法

    使用Speedpan使用百度网盘极速下载方法 关键词:百度网盘,极速下载,速盘,speedpan 压缩包文件名字:speedpan_v2.0.3.zip,对于Windows系统 链接: https:/ ...

  7. flink国内镜像 极速下载

    flink国内镜像 https://mirrors.cloud.tencent.com/apache/flink 国内镜像汇总 – 极速下载 – JavaPub汇总

  8. eclipse国内镜像极速下载

    eclipse国内镜像极速下载 http://mirrors.ustc.edu.cn/eclipse/technology/epp/downloads/release/ 国内镜像汇总JavaPub汇总

  9. 国内镜像汇总-极速下载【JavaPub版】

    持续更新,建议收藏--可留言 文章目录 国内镜像汇总-极速下载[JavaPub版] JDK国内镜像 Hadoop国内镜像 github加速 phantomjs.ChromeDriver.OperaDr ...

最新文章

  1. Python 位运算符
  2. 早上突然看明白 shader和材质球的关系
  3. isdigit函数python检测数字个数_Python isdecimal isdigit isnumeric区别
  4. 转: Fedora 17 安装flash插件
  5. linux根目录挂载到2440开发板,飞凌2440开发板挂载NFS
  6. 剑指offer47 不用加减乘除做加法
  7. python 网页樱花动态图_python,tensorflow线性回归Django网页显示Gif动态图
  8. Ubuntu Linux将支持所有树莓派设备
  9. java get post 注解,GET/POST接收或发送数据的问题
  10. web服务器和数据库服务器不在同一台机器上,如何连接?
  11. 北京冬奥会交通临时管理措施发布:春节前调休工作日限行
  12. Technica Engineering
  13. 2021-2027全球及中国结构光源三维扫描仪行业研究及十四五规划分析报告
  14. matlab凑数求和,excel自动凑数求和 使用规划求解来解决excel自动凑数求和的方法...
  15. Android图片轮播控件
  16. Matplotlib 绘制条形图
  17. 一天一道CTF 第六天
  18. 2022年经历太多,大家都太艰难了,听一首悲伤的歌曲,代表现在的心情,送别老朋友
  19. Android实现截屏方式
  20. 基于三维GIS的场数据模型研究与实践

热门文章

  1. linux c 得到指定进程内存占用
  2. CMake Error: CMake was unable to find a build program corresponding to Ninja.
  3. http抓包工具推荐WSockExpert/httpwatch/HttpAnalyzer/DebugBar
  4. C 函数 strstr 的高效实现
  5. Linux core dump的详细介绍及使用
  6. Linux内核探讨-- 第二章
  7. CentOS7.2基于LAMP搭建WordPress,并自定义Logo和名称
  8. Linux操作系统基础 Intel32位系统架构总览
  9. jquery设置复选框为只读_checkbox设置复选框的只读效果不让用户勾选
  10. CMake命令之function