4

ユーザーがテーブルの行を追加または削除したいときにテーブルソーターが更新をトリガーする例をたくさん見てきましたが、変更があった場合に行全体または tbody をリロードできるかどうかを確認したいと思います。データベース?

これは私がやろうと思っていたことなので、これが良いアイデアかどうか教えてください。

JAVASCRIPT と PHP でのセットアップ:

1.ページが最初にロードされると、スクリプトは移動して、lastUpdate を表示する (.PHP) ページを取得します (例: '2013-07-18 10:37:29') .PHP ページはデータベースに移動します ( MySQL) そして lastUpdate を取得して表示します) この lastUpdate 情報 (日付/時刻) は後で使用するために VAR に保存されます。

2.同じ (.PHP) ページに ping を実行するタイマーを追加し、lastUpdate と、ページが最初に読み込まれたときに取得した最初の lastUpdate を比較します。

3. x 秒 (10 秒程度) ごとに ping を実行し続け、データベース内の lastUpdate への変更を検出します。

4. (比較): 初期の lastUpdate 値がデータベースから取得した値よりも小さい場合、これはデータベースの内容が変更されたことを意味し、考えられる 2 つのことのいずれかを実行します。

この時点からやりたいことは次のとおりです。

オプション 1:古い行のみを削除し、更新された行に置き換えます。すべての行には一意の ID があるため、javascript もこの ID# を取得して、テーブル内のその行を更新するだけです。

また

オプション 2:現在の Tbody を削除してから、Tbody 全体を新しいデータで再読み込みします。

テーブルには多くの行/列があり、画像、hrefs などを使用しています...そのため、各行は重い行であり、可能であればオプション 1 を使用したいのですが、方法がわかりませんこの最後の部分をやりなさい!?

(チャット プログラムとは異なり) データベースで更新された ID を知っている限り、行は正しい順序である必要はありません。

ユーザーが連絡先と連絡先情報を編集/更新、追加、削除できるアドレス帳があるとします。ここで必要なのは、変更をスキャンし、変更が見つかったときにその行の ID とデータをデータベースを ID を介して一致するテーブルの行に移動し、それを更新するか、古いものを削除して新しいものに置き換えますが、ID がデータベースに見つからない場合は、テーブルから ID を削除します。データベースで長くなります。

したがって、私が遭遇できる唯一の問題は、複数のユーザーが同時に (正確な秒のように) 変更を行った後、1 つの更新のみが表示されることです。しかし、正確な日付/時刻を持つ他の異なるIDが存在するかどうかをデータベースで確認し、存在する場合はそれらも更新することで、これを回避できると思います。

これを読んでくれて、そしてあなたが私に提供してくれたどんな助けにも感謝します。

4

2 に答える 2

2

オプション 1. 送受信されるデータが少ない。レンダリングが少ない。

それが私がすることです:

サーバー側のスクリプト/サーブレット/何でもチェックしてJSsetTimeout関数を持っています。AJAXいずれかの行がSQLクエリに一致する場合は、 JSON.

JSON が戻ってきたら、すべてのオブジェクト (テーブルの行) を解析し、それぞれを新しいデータにJSON置き換えます。TR

于 2013-07-18T16:15:28.693 に答える
1

WebSocket やサーバー プッシュを使用します。クライアント数が 1000 の場合、1 秒あたり 0.1*1000=100 リクエストになります。あなたのサーバー側がそれで大丈夫かどうかはわかりません。

Websocket またはサーバー プッシュを使用している場合、データベース更新のイベント (更新者がイベントをスローする必要があります) で、サーバーはクライアントに送信します。

  • データベース行の順序 (すべて一意の ID を持っています)
  • 変更された行

クライアントを更新するには、PHP とは別のものを使用することをお勧めします。たとえば、Javaサーブレット。おそらく、クライアント側でデータベース行を更新するタスクのためだけに、最初の PHP ページを保持できます。

@compcobalt への回答: 簡単に言うと、u は WebSocket 経由で 2 つのデータ型を受け取ります。

  • JSON エンコードされた配列
  • テーブル行を含む XML ドキュメント

配列は次のとおり[47,27,1001,36,4,833,5,98,478,...]です。配列には、データベース行のすべての ID が正しい順序で含まれています。正しい順序は、たとえば、データベース内の行の順序である場合があります。javascript は、その順序に対応するように html テーブルを即座に変更します。行番号 26 があった前に配列にそのような行がない場合でも、javascript はそれを削除します。

<tr data-id="47">...</tr><tr data-id="27">...</tr><tr data-id="1001">...</tr>

JS が行番号 1001 について何も知らない場合や、行番号 27 が更新されている場合でも。次に、XML ドキュメント (または JSON、または任意の形式) を取得して解析します。

ここでは、更新された行 #27 と新しい行 #1001 のコンテンツを取得し、テーブルの行にコンテンツを入力します。

次に、新しいサーバーのプッシュの待機を開始します。

于 2013-07-18T16:18:58.237 に答える