通过cURL发送HTML5 Server-Sent事件

时间:2011-09-19 09:54:12

标签: php html5 curl server-sent-events

我正在尝试基于HTML5的通知系统,基于我的数据库中的表发生什么时。我已专门为此通知功能制作了表格。这是它的工作原理:

  1. 服务器发送事件页面(sse.html)将引用source.php作为其通知内容。
  2. action.php包含通过将数据插入表格来触发更改内容通知的操作。
  3. source.php会定期检查表格中的新数据。它应该通过通知,如果有的话。
  4. 我的问题是,如果不检查表格就可以这样做吗?

    我正在考虑使用cURL在source.php执行操作时直接将内容发送到action.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>
    

    source.php

    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;  
    }
    

1 个答案:

答案 0 :(得分:1)

回答你的问题:

  

......是否可以在不查看表的情况下执行此操作?

没有

您的PHP脚本检查SQL表以查看是否有任何数据已更改。 PHP可以检查数据库更改的唯一方法是查询数据库。