-2

Javascript、PHP、および mySQL を使用して、かなり複雑なプロジェクト管理システムを作成しています。すべてのユーザーは mySQL テーブルに保存され、ログイン時に PHP でセッション変数を設定し、最後にログインした時間をログに記録します。単純にこれを行うのは、ユーザーが F5 キーを押してアクセス数を増やすことができないようにするためです。

ログインしているすべてのユーザーが、現在サイトにログインしている他のすべてのユーザーのリストを表示できるようにしたいと考えています。

これを解決するために私が見ることができる唯一の方法は、2つのことを行うPHPスクリプトを起動することです(たとえば、10秒ごとに)。現在のユーザーの現在の時刻を mySQL テーブルに記録し、他のすべてのユーザーの最後のログ時刻を調べます。最後のログ時間が現在の時間の 20 秒未満である人は、ログイン済みとして表示されます。

Javascript、Ajaxなどでタイマーを使用してこれらすべてを行う方法は知っていますが、必要なことを達成する方法はかなり洗練されていないように思えます。

私の質問:

これは私が望むものを達成するための最良の方法ですか

ajax呼び出しを送信し、すべてのユーザーに対して10秒ごとにmySQLデータベースを更新することは、プログラミングの良い方法ですか.

4

2 に答える 2

1

現在ログインしているユーザーに関する情報を含む「loggedinusers」というテーブルを作成することをお勧めします。ページのリストを更新する場合は、間違いなく javascipt を使用します。これは、タイマー db を使用した Ajax クエリで実行する必要があります。

別の解決策は、各ページに移動するときに db を照会する php モジュールをページに配置することです。そのため、ユーザーがサイトをナビゲートしている間にログインした新しいユーザーに関する情報を取得できます。これはかなり合理的だと思います。

小さなテーブル (わずか数千のエントリ) では、パフォーマンスが低下することはありません。

于 2013-02-27T12:14:11.533 に答える
1

Well, it depends on the architecture.

If this information will be available only for you and some group of extra users - you may just grep Varnish / Apache / Nginx logs (you can add some extra logging to show cookies and so) every 1 - 2 minutes and output it to the static html page - which will be available after providing credentials.

It is bit different way to do it - but does not affect performance of your platform.

于 2013-02-27T12:14:45.330 に答える