sql >> Database teknologi >  >> RDS >> Mysql

Server Side Events med PHP &MySQL

Du mangler et par ting på serversiden for at få dette til at fungere.

Først, som @RiggsFilly påpegede, skal du bruge en WHERE-sætning i sætningen. Betingelsen bør være at se efter transaktioner, der er nyere end sidst afsendte.

Til det skal du holde styr på tidsstemplet for den sidst sendte besked.

Serveren skal kun sende en besked, hvis forespørgslen, nu med betingelsen, returnerer et resultat.

Endelig skal hele rutinen til at tjekke for nye transaktioner og sende en besked, hvis den findes, holdes i en sløjfe.

<?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. nemme måder at vælge rækker fra alle tabeller på

  2. Uddrag dag/måned/år fra et tidsstempel på MYSQL

  3. Hvordan bruger man WebDev.WebServer.exe (VS Web Server) i x64?

  4. Hvad er en database? Definition, typer og komponenter