ホームページ >バックエンド開発 >PHPチュートリアル >同じアカウントで最大 10 人が同時にオンラインログインできるシステムです。どうすればよいですか?
同じアカウントで最大 10 人が同時にオンラインログインできるシステムです。どうすればよいですか?
システムでは、同じアカウントで最大 10 人が同時にオンラインにログインできます。これを行うにはどうすればよいですか?みんながどう思っているか教えてください。 。
-----解決策--------------------------------
それは内部システムですか?
ログテーブルを作成します
ip user_id last_time
10 分以内にオンラインになると仮定します
WHERE last_time+600 > time() より大きい場合は GROUP BY user_id を追加します10 未満のログインは許可されていません。
last_time+600
詳細は実際にテストする必要があります...
------解決策------------------
ログインはログイン、制限は制限です。
セッションごとに 1 回のログイン。通常のユーザーと変わりません。
この制限は、アカウントごとに 1 つのデータベース カウント フィールドで十分です。問題は、特定のユーザーの特定のログインを期限切れにする方法です。
ユーザーが毎回ログアウトする場合は、データベースを -1 操作するだけです。 ユーザーがログアウトしない場合、セッションの有効期限が切れたときにデータベースは -1 とカウントする必要がありますが、これはユーザーにとってより合理的です。ただし、セッションの有効期間と -1 のカウントを自動的に関連付けることは困難です。つまり、特定のログイン セッションが期限切れになっているにもかかわらず、データベースには -1 が存在せず、これはユーザーにとって不公平です。
したがって、データベース数 -1 を操作するためにセッション有効期限コールバックを登録できれば素晴らしいのですが、コールバックを呼び出すように設定できる php.ini があるかどうかはわかりません。 phpファイル? おそらくそうではありません。 。
そこで、私が最終的に出した解決策は次のとおりです。ユーザーはログアウトせずに常にログインしたままにし、メンテナンスのために別の COOKIE に依存します。 。 。 crontab に PHP タイミング スクリプトを実行させて、N 回以上ログインしているユーザーの COOKIE レコードを削除し、テクノロジーを -1 にします。これにより、最初にログインした学生は何も言うことがなくなります。再度ログインを試行することしかできません。
テーブルを追加します: AUTO_ID USER COOKIE。各 USER の各ログイン ポイントは、このテーブル内の同じ USER の COOKIE を 10 個以下に制限します。これは、10 人のユーザーのログ記録が制限されることを意味します。 COOKIE が生成され送信されている限り、ログアウトしない限り、ログインごとに一定期間オンラインのままになります。PHP はデータベース内の COOKIE をチェックすることによってそのユーザーを検出します。ログアウトしていないユーザーをクリーンアップするには、crontab を実行して定期的にクリーンアップするしかありません。
まとめ! ~~~~~ 実際には、SESSION は常に期限切れになり、期限切れになると追跡できないため、セッションをデータベースに永続化する必要があるからです。 ! !
第二に、SESSION の有効期限が切れており、コールバック関数がないため、タイムアウト COOKIE をクリーンアップするには永続化後に crontab を定期的に実行するしかありません~~~~
------解決策---------