2017-09-07 6 views
0

データベース内のデータが更新されたときにクライアントサイドのWebを自動更新したい場合、データを追加または削除すると成功しました。データベース内のデータが更新されたときにPHPページが更新されます

<script> 
var row1 = "<?php echo $variable; ?>"; 

var processUpdate = function(response) { 
    var x = response; 
    //console.log(x); 
    if (row1 != x) { 
     window.location.reload(); 
    } 
} 

var checkUpdates = function() { 
    serverPoll = setInterval(function() { 
     $.get('check.php', { lastupdate: 1 }, processUpdate, 'html'); 
    }, 1000) 
}; 

$(document).ready(checkUpdates); 

</script> 

check.php

これは、データベースからデータをチェックするための私のコードです

$query = mysqli_query($koneksi, "SELECT * FROM table"); 
$number = mysqli_num_rows($query); 
echo $number; 

私は、テーブル内のすべてのデータが変更された場合に自動的に更新されるように変更する必要がありますか?

+0

広すぎます。しかしそこには、その仕事を手伝ってくれるdbがあります:https://www.rethinkdb.com/。 mysqlを使うと、カウンタをどこかに置いて、変更が加えられたときにカウンタを増やすことができます。あなたが実際のカウンター値から早く発散するカウンターの最後の値が変わったとき、あなたは何かが変わったことを知っています。その後、更新することができます。 – Federkun

+0

ありがとうございます。私はあなたの提案に従って試してみます –

+0

@FederkunのアプローチをREDISと組み合わせて使用​​し、それをカウンタのキャッシュとして使用することもできます。 – Tiega

答えて

1

あなたは別のテーブル内の各テーブルの更新に関するいくつかの情報を挿入するトリガを使用して、ちょうどあなたがここに新しいものをチェックし、同様の方法で「変更」テーブルの上にnum個の行を問い合わせることができます。

DELIMITER // 
CREATE TRIGGER table_update_trigger AFTER UPDATE ON table 
    FOR EACH ROW BEGIN 
    INSERT INTO table_history 
    (
     change 
    ) 

    (
     NEW.some_value, 

    ); 
    END 
// 

このソリューションの利点は、Redisのような他のdbシステムを導入/依存/保守する必要はなく、同様の方法で更新、挿入、削除のカウンターとクエリを保持および更新する責任を負いません。また、table_historyテーブルを拡張して、変更を追跡する際に関心のあるすべてのフィールドをログに記録し、アプリケーションの目的に合わせて有用な変更履歴を作成することもできます。

関連する問題