sql >> Database >  >> RDS >> Mysql

Server Side Events met PHP &MySQL

Je mist een aantal dingen aan de serverkant om dit te laten werken.

Ten eerste, zoals @RiggsFily opmerkte, moet je een WHERE-component in de instructie gebruiken. De voorwaarde zou moeten zijn om te zoeken naar transacties die nieuwer zijn dan de laatst verzonden.

Daarvoor moet je de tijdstempel van het laatst verzonden bericht bijhouden.

De server zou alleen een bericht moeten verzenden als de zoekopdracht, nu met de voorwaarde, een resultaat oplevert.

Ten slotte moet de hele routine om te controleren op nieuwe transacties en een bericht te sturen als deze wordt gevonden, in een lus worden gehouden.

<?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. Hoe u alle beperkingen van CHECK &Foreign Key voor een tabel in SQL Server uitschakelt (T-SQL-voorbeelden)

  2. Hoe een standaardbeperking in MySQL toe te voegen?

  3. MySQL - Hoe een Oracle RANK() OVER(ORDER BY score DESC) te doen

  4. Hostingpakket op Chocolatey