[正確に]300秒(5分)の間アクティビティがないプライベートチャットルームを監視するために使用されるバックエンドモジュール(PHPで記述)を構築しています。そうである場合、スクリプトはデータベースを更新します(最大ユーザー数を特定の数に設定します)。now()と最後に送信されたメッセージの時間差によってアイドル時間のスパンを監視しています。
私がしたこと:監視スクリプトを1分または60秒ごとに(php-cliを介して)実行するcronジョブを設定します。監視スクリプトの内部:
$expire_time = time() + 60;
//this loop will run for 60 seconds
while(time() < $expire_time)
{
$idle_time = get_all_chatrooms_idle_time();
foreach($idle_time as $s_time)
{
if($s_time >= 300)
{
update_changes();
}
}
usleep(500000);
}
300秒のアイドル時間後に最大ユーザー数を即座に設定するという条件は交渉できません。ですから、「何かが実際にそれを要求するまで何もしない」というようなアドバイスには、あまり意味がありませんが、実際には従うことができません。
理由?アクティブおよび非アクティブなチャットルームのデータは、ダッシュボードにも表示されるため、リアルタイムである必要があります。チャットルームのモデレーターの支払いはそれに依存します。
ダッシュボードの読み込みごとにチェックしてみませんか?申し訳ありませんが、それでも不可能です。
チェックはサーバー側で行う必要があり、ダッシュボードはajaxで更新され、毎秒ポーリングされます。
ajax呼び出しによって要求されているページに監視コードを添付すると、現在の実装よりもリソースを大量に消費すると思います(Imが間違っている場合は修正してください)
ユーザー数の概算を示して、取得している負荷/トラフィックを想像できるようにします。
- モデレーターを含むおしゃべりの数:〜800
- チャットルームの数:〜250
- (x)チャットルームモデレーターの数:〜50
- (x)私の上司と彼のスタッフ:
(x)-ダッシュボードを表示できます
もっと良い方法はありますか?私はそれを正しくやっていますか?