Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zdarzenia po stronie serwera z PHP i MySQL

Brakuje Ci kilku rzeczy po stronie serwera, aby to działało.

Po pierwsze, jak zauważył @RiggsFilly, w oświadczeniu należy użyć klauzuli WHERE. Warunkiem powinno być szukanie transakcji, które są nowsze niż ostatnio wysłany.

W tym celu musisz śledzić znacznik czasu ostatniej wysłanej wiadomości.

Serwer powinien wysłać wiadomość tylko wtedy, gdy zapytanie, teraz z warunkiem, zwróci wynik.

Wreszcie, cała procedura sprawdzania nowych transakcji i wysyłania wiadomości, jeśli zostanie znaleziona, musi być utrzymywana w pętli.

<?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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BŁĄD 1045 (28000):Odmowa dostępu dla użytkownika „root”@„localhost” (przy użyciu hasła:TAK)

  2. Zapytanie MySQL do zliczania unikalnych domen z pola adresu e-mail

  3. BŁĄD:HHH000299:Nie można ukończyć aktualizacji schematu java.lang.NullPointerException

  4. Licznik odwiedzających Laravel

  5. odmowa dostępu do załadowania pliku danych w MySQL