アプリを同時に使用できるユーザー数を制限するシステムを実装する必要があります。現在アクティブなセッションの数を数え、それに基づいて制限するのが最善の方法だと考えています。
現在アクティブなセッションの数をカウントするにはどうすればよいですか。それが違いを生む場合、memcachedを使用してセッションを保存しています
アプリを同時に使用できるユーザー数を制限するシステムを実装する必要があります。現在アクティブなセッションの数を数え、それに基づいて制限するのが最善の方法だと考えています。
現在アクティブなセッションの数をカウントするにはどうすればよいですか。それが違いを生む場合、memcachedを使用してセッションを保存しています
PHP で特定の時間にすべてのアクティブなセッションをカウントする方法がわかりません。これには常にデータベースを使用しており、そこに IP アドレスと現在の日付 (NOW() SQL 関数) を保存します。次に、次のようなクエリを実行できます (MySQL 構文):
SELECT COUNT(*) as active_users
FROM logged_users
WHERE last_action > NOW() - INTERVAL 5 MINUTE;
次に、ページを表示するか、ユーザーが Web サイトを表示できないようにするかを選択できます。
あなたのWebサーバーは同時クライアントの最大数を制限できますか? (ただし、これは画像やその他の静的コンテンツの取得に影響を与える可能性があります)
open
最も簡単な方法は、セッションの、destroy
およびgc
コールバックを ( を使用してsession_set_save_handler()
) インターセプトし、memcached 内のセッション カウント値をインクリメント/デクリメントすることだと思います。何かのようなもの:
class Memcache_Save_Handler {
private $memcached;
public function open($save_path, $name) {
$session_count = (int)$this->memcached->get('session_count');
$this->memcached->set('session_count', ++$session_count);
// rest of handling...
}
public function destroy($id) {
$session_count = (int)$this->memcached->get('session_count');
$this->memcached->set('session_count', --$session_count);
// rest of handling...
}
}