HTML5 отправленные сервером события через cURL - PullRequest
2 голосов
/ 19 сентября 2011

Я пытаюсь создать систему уведомлений на основе HTML5, основанную на том, когда что-то происходит с таблицей в моей базе данных.Я специально сделал таблицу для этой функции уведомления.Вот как это работает:

  1. Страница событий, отправленных сервером (sse.html) будет ссылаться на source.php в качестве содержимого уведомления.
  2. action.php содержит действие, котороевызвать уведомление об изменении содержимого, вставив данные в таблицу.
  3. source.php будет периодически проверять наличие новых данных в таблице.Он должен передать уведомление, если таковые имеются.

Мой вопрос, возможно ли сделать это без проверки таблицы?

Я думаю об использовании 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 Ответ

1 голос
/ 19 сентября 2011

Чтобы ответить на ваш вопрос:

... возможно ли это сделать без проверки таблицы?

Нет.

ВашPHP-скрипт имеет , чтобы проверить таблицу SQL, чтобы увидеть, изменились ли какие-либо данные.Единственный способ, которым PHP может проверить изменения базы данных, - это запросить базу данных.

...