Mysql
 sql >> Base de données >  >> RDS >> Mysql

Événements côté serveur avec PHP et MySQL

Il vous manque quelques éléments côté serveur pour que cela fonctionne.

Tout d'abord, comme @RiggsFily l'a souligné, vous devez utiliser une clause WHERE dans l'instruction. La condition doit être de rechercher les transactions qui sont plus récentes que le dernier envoyé.

Pour cela, vous devez garder une trace de l'horodatage du dernier message envoyé.

Le serveur ne doit envoyer un message que si la requête, maintenant avec la condition, renvoie un résultat.

Enfin, toute la routine pour vérifier les nouvelles transactions et envoyer un message s'il est trouvé doit être maintenue en boucle.

<?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);
}