Php HTML5服务器通过cURL发送事件

Php HTML5服务器通过cURL发送事件,php,html,curl,server-sent-events,Php,Html,Curl,Server Sent Events,我正在尝试创建一个基于HTML5的通知系统,基于数据库中某个表上发生的事件。我专门为这一通知功能制作了表格。这就是它的工作原理: 服务器发送事件页面(sse.html)的通知内容将参考source.php action.php包含通过向表中插入数据来触发内容更改通知的操作 source.php将定期检查表中的任何新数据。如果有任何问题,它应该发出通知 我的问题是,如果不检查表格就可以这样做吗 我正在考虑在执行action.php中的操作时,使用cURL将内容直接发送到source.php。这能做

我正在尝试创建一个基于HTML5的通知系统,基于数据库中某个表上发生的事件。我专门为这一通知功能制作了表格。这就是它的工作原理:

  • 服务器发送事件页面(
    sse.html
    )的通知内容将参考
    source.php
  • action.php
    包含通过向表中插入数据来触发内容更改通知的操作
  • source.php
    将定期检查表中的任何新数据。如果有任何问题,它应该发出通知
  • 我的问题是,如果不检查表格就可以这样做吗

    我正在考虑在执行
    action.php
    中的操作时,使用cURL将内容直接发送到
    source.php
    。这能做到吗

    我见过cURL与HTTP头
    Content-Type
    一起被设置为
    text/event-stream
    ,但我不知道如何使用它

    sse.html

    <!DOCTYPE html>  
    <html>  
    <body>  
      <script>  
        var source = new EventSource('source.php');  
        source.onmessage = function(event){  
          var text = event.data;  
          window.webkitNotifications.createNotification('', 'Alert', text).show();  
        }  
      </script>  
    </body>  
    </html>
    
    header("Content-Type: text/event-stream");
    header("Cache-Control: no-cache");
    
    mysql_connect("localhost", "user", "pass");
    mysql_select_db("eventstream");
    
    $q = mysql_query("select textnotif from notification where read='0'");
    $r = mysql_fetch_array($q);
    
    $notif = $r[textnotif];
    
    if($notif != ""){  
        echo "data: ".$notif.PHP_EOL;  
    }
    

    回答你的问题:

    。。。如果不检查表格就可以这样做吗

    没有


    您的PHP脚本必须检查SQL表以查看是否有任何数据发生了更改。PHP检查数据库更改的唯一方法是查询数据库。

    值得补充的是,有更好的方法可以做到这一点,例如使用消息队列发布/订阅。你应该看看这个视频: