2

データベース内のテーブルで何かが発生したときに、HTML5 ベースの通知システムを作成しようとしています。この通知機能の表を特別に作成しました。これがどのように機能するかです:

  1. Server-Sent Events ページ ( sse.html) はsource.php、その通知内容について参照します。
  2. action.phpテーブルにデータを挿入することによってコンテンツ変更通知をトリガーするアクションが含まれています。
  3. source.phpテーブル内の新しいデータを定期的にチェックします。通知がある場合は、通知を渡す必要があります。

私の質問は、テーブルをチェックせずにこれを行うことは可能ですか?

source.phpアクションが実行されたときにcURLを使用してコンテンツを直接送信することを考えていaction.phpます。これはできますか?

Content-TypeHTTP ヘッダーを に設定して 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 に答える