sql >> データベース >  >> RDS >> Mysql

PHPとMySQLを使用したサーバーサイドイベント

    これを機能させるために、サーバー側でいくつかのことが欠けています。

    まず、@ RiggsFillyが指摘したように、ステートメントでWHERE句を使用する必要があります。条件は、新しいトランザクションを探すことです。 最後に送信されたよりも。

    そのためには、最後に送信されたメッセージのタイムスタンプを追跡する必要があります。

    サーバーは、条件付きのクエリが結果を返した場合にのみメッセージを送信する必要があります。

    最後に、新しいトランザクションをチェックし、見つかった場合はメッセージを送信するルーチン全体をループに保持する必要があります。

    <?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. SQLite3LIKEまたはPostgreSQLILIKE用の汎用Rubyソリューション?

    2. 単一行のnull以外の値をカウントするMySQLクエリ

    3. 一意の値の数を数える

    4. MySQLのランク関数