2

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

  1. 服务器发送事件页面 ( sse.html) 将参考source.php其通知内容。
  2. action.php包含通过向表中插入数据来触发内容更改通知的操作。
  3. source.php将定期检查表中的任何新数据。如果有的话,它应该通过一个通知。

我的问题是是否可以在不检查表格的情况下执行此操作?

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

Content-Type我已经看到将 HTTP 标头设置为的 cURL 使用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;  
}
4

1 回答 1

1

要回答您的问题:

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

不。

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

于 2011-09-19T17:05:07.657 回答