sql >> Databasteknik >  >> RDS >> Mysql

Server Side Events med PHP &MySQL

Du saknar ett par saker på serversidan för att få det här att fungera.

Först, som @RiggsFilly påpekade, måste du använda en WHERE-sats i uttalandet. Villkoret bör vara att leta efter transaktioner som är nyare än den senast skickade.

För det måste du hålla reda på tidsstämpeln för det senast skickade meddelandet.

Servern ska bara skicka ett meddelande om frågan, nu med villkoret, returnerar ett resultat.

Slutligen måste hela rutinen för att leta efter nya transaktioner och skicka ett meddelande om det hittas hållas i en slinga.

<?php 
include 'conn.php'; // database connection

header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");

$query = "SELECT TimeStamp, CardNo FROM transactions WHERE TimeStamp > ?";
$stmt = $conn->prepare($query);
$ts = time();

while(true) 
{
    if ($result = $stmt->execute([$ts])) {
        $row = $result->fetch_assoc();
        echo "data: " . $row['CardNo'] . "\n\n";
        $ts = $row['TimeStamp'];
        flush();
    }
    sleep(2);
}


  1. Lagra HTML i MySQL-databas

  2. Vad innebär det att dela upp en Microsoft Access-databas?

  3. Datamodell för bilverkstad

  4. Funktioner vs lagrade procedurer