1

アプリケーションでオンライン ユーザーのリストを表示しようとしています。私の要件を説明しましょう。ユーザー名とそのステータスモード(1または0)のリストが格納されているMysql DBテーブルがあります。私は2つのphpページを持っています。1 つは、すべてのユーザーの名前とステータス モードを一覧表示するためのものです。2 ページ目は、ユーザーのモードを 1 から 0 に、またはその逆に編集するためのものです。ここで、これら 2 つのページを別のシステムから開きます。あるシステムから1人のユーザー(編集ページ)のステータスを変更すると、リストページが開かれている別のシステムに自動的に反映され、更新されたレコードが表示されます。明らかに、これはリストページを更新する前に発生するはずです。gtalk チャット ユーザーと同じです。

コードを尋ねているわけではありませんが、問題を解決する方法を教えてください。明らかに、cronjob は解決策の 1 つです。別の解決策を提供してください。

前もって感謝します。

4

2 に答える 2

1

このようなことを実現するには、クライアント側で JavaScript と Ajax を使用する必要があります。XMLHttpRequest を試してみてください。簡単にするために、jQuery のようなものを使用できます。サーバー側では、json を使用してデータを送信できます。テーブルからデータを読み取り、それを配列に入れます。それを と呼びましょうusers。キーは名前で、値はモード (1 または 0) です。

次に使用しますjson_encode(ARRAY)

//Echo the results in json format
echo(json_encode($users));

ユーザー 'Frank'、'Susan'、'George' がオンラインで、'Isabell' と 'John' がオフラインであるとします。次に、スクリプトは次のような出力になります。

{"Frank":1,"Susan":1,"George":1,"Isabell":0,"John":0}

もちろん、これとロードを別のphpスクリプト、おそらくrefresh.phpに入れる必要があります。

そして、スクリプトからデータを読み取るために、JavaScript をビュー ページに追加します。XMLHttpRequest を使用して、追加したスクリプトからデータを要求します。または、jQuery を使用する場合$.getJSON("NameOfTheScriptYouJustWrote")は、既に解析されたオブジェクトを返すだけで使用できます。

次に、返されたデータを使用してユーザーのリストを更新します。5 ~ 20 秒ごとに更新します。

また、これはまったく効率的な方法ではなく、サービスを使用するクライアントが多い場合はうまく機能しないことに注意してください。

于 2013-05-30T06:27:17.967 に答える
1

実際、cronjobs は必要なものではありません。

cronjobs を使用すると、タスクをスケジュールできます。あなたが望むのは、新しい情報が見つかったときのクライアント側の更新です。cronjobs はサーバー側であり、常に間隔があります。

必要なのはポーリングまたはコメットです

最初のポーリングでは、クライアント側を使用して x 秒ごとにスクリプトを実行し、新しい情報があるかどうかを調べます (私の意見ではリソースの無駄です)。

Commet は、今ではより良い解決策です。しかし、多くの場合、実装は困難です。このタイプのものにはプッシャーを使用しました。接続されている (すべての) クライアントにメッセージをプッシュして、新しい情報があると言うことができます。そして、彼らは更新するか、メッセージとともに新しい情報も提供します

于 2013-05-30T06:25:57.857 に答える