You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确使用HTML5 SSE结合PHP与Python实现API端点存活检测

问题根因与修复方案

核心错误原因

你遇到的连接报错是SSE实现不符合协议规范、路径配置错误、AWS EC2网络规则配置不当三类问题共同导致的,修复步骤如下:


修复步骤

1. 修正SSE响应格式

SSE协议要求单条消息必须满足两个强制规则:

  • 消息内容前缀必须为data:
  • 每条消息末尾必须加两个连续的换行符\n\n
    你当前直接输出检测结果不符合规范,Firefox无法识别有效响应会主动断开连接。

2. 修正所有路径配置

  • EventSource构造的pingServers.php路径必须和当前HTML页面同源同路径,或者填写完整绝对URL
  • Python脚本中的MyJSONEndpoint.php必须填写完整的HTTP/HTTPS URL,不能使用相对路径,Python执行时无法识别Web相对路径规则

3. 配置AWS EC2安全组与运行权限

  • 确认EC2安全组入站规则开放了Web服务对应的80/443端口,允许你的客户端IP访问
  • 确认Web服务器运行用户有Python3执行权限、pingServers.py文件读取权限,提前在EC2命令行手动执行python3 pingServers.py验证脚本可正常输出结果
  • 若站点为HTTPS协议,SSE请求也必须走HTTPS,不能混合HTTP请求,同时按需在PHP头部加CORS头允许跨域访问

4. 按需调整长连接逻辑

如果需要持续检测API存活状态,需要在PHP中添加死循环定时执行检测,否则脚本单次执行结束后连接会自动断开,浏览器会触发重连逻辑。如果仅需单次检测,不需要使用SSE,直接用普通fetch请求调用即可,更轻量化。


修改后参考代码

pingServers.php

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header('Connection: keep-alive');
// 跨域场景下添加,替换为你的前端域名
// header('Access-Control-Allow-Origin: https://your-domain.com');

// 关闭所有输出缓冲,确保消息实时推送
if (ob_get_level()) {
    ob_end_clean();
}
ob_implicit_flush(true);

// 持续检测场景保留死循环,单次检测删除即可
while (true) {
    // 替换为pingServers.py的绝对路径
    $output = shell_exec("python3 /var/www/html/pingServers.py");
    // 严格遵循SSE格式输出
    echo "data: " . trim($output) . "\n\n";
    flush();
    // 检测间隔,单位秒,按需调整
    sleep(10);
}
?>

pingServers.py

#!/usr/bin/python
import requests

# 替换为你的API接口完整URL
response = requests.post('https://your-domain.com/MyJSONEndpoint.php')
if response.status_code == 200:
    print('OK')
else:
    print('not OK')

前端代码新增错误监听(方便排查问题)

if(typeof(EventSource) !== "undefined") {
    var source = new EventSource("pingServers.php");
    source.onmessage = function(event) {
        document.getElementById("searchDatabases").innerHTML = event.data + "<br>";
    };
    // 新增错误监听
    source.onerror = function(e) {
        console.error("连接异常", e);
        source.close();
    };
} else {
    console.info("Not supported browser!");
}

内容的提问来源于stack exchange,提问作者alma korte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:54:05