1

PHPセッションでユーザーログインシステムを作成したところ、ユーザーはサイトに登録してログインし、別のことを行うことができます...

今、私はすべてのオンラインユーザーを取得するonline.phpを作成したいと考えています。私はほとんどすべてをグーグルで検索し、これをstackoverflowで検索して成功しませんでした。

さて、私は高性能で作成したいシステムについて説明したいと思います..ユーザーがログインすると、テーブルを更新するだけuserです。lastloginこれはタイムスタンプであり、online.php で * 時間間隔が 5 分未満のすべてのユーザーを選択します。この目的のために、ユーザーが各ページをロードするときにデータベースのこのタイムスタンプ フィールドを更新できlastloginます。これには、ジョブを実行するための多くの mysql クエリのコストがかかります...その後、各ページのロードで更新する必要があります

UPDATE userset last=now()

それには多くのmysqlクエリがかかります。今、セッションを使用するなどの別の方法を探しているか、このリンクで見つけたものを探しています

「通常の解決策は、ユーザーが何かを行うたびに更新するテーブルにタイムスタンプを保存することです。最近のタイムスタンプ (たとえば 5 分) を持つユーザーはログイン済みとして表示され、それ以外のユーザーはログアウトされます。

ページが読み込まれるたびに更新する必要さえありません。最終更新時刻のタイムスタンプもセッションに保持し、データベース フラグの有効期限が近づいている場合にのみテーブルを更新してください。」

残念ながら、答えはあまり役に立ちませんでした。これについて例を挙げたり、説明したりする必要があります。

4

1 に答える 1

1

1.)セッションでより高速が必要な場合は、たとえばmemcacheがあります。単純なキー-セッションまたはキーを保存するための値ストア。すべてのセッションが自動的にmemcacheに保存されるようにApacheを構成できます。

2.)別の解決策は、MySQLがRAMに保持するMEMORYテーブルを作成することです。問題は、サーバーを再起動すると、このテーブルのデータが失われることです。しかし、前回のログオンの場合は問題ないと思います。

3.) PHP共有メモリ:小さなデータの場合はhttp://php.net/manual/de/ref.shmop.php 。

ソリューションを実装したときは、MEMORYテーブルまたはSHMソリューションをお勧めします。

編集: HDDでの検索の最後の段落は、上のコメントに関連していました:開いているセッションの数を見つける

于 2012-11-02T13:20:18.733 に答える