我正在编写一个后端模块(用PHP编写),用于监控私人聊天室,如果[ 正好 ] 300秒(5分钟)没有活动,则需要更新数据库(设置最大用户数和其他内容)。我通过now()和上一条消息发送时间的时间差来监控闲置时间段。
我的做法是:设置一个cron作业,每分钟或60秒运行一次我的监控脚本(通过php-cli)。在监控脚本内部:
我的做法是:设置一个cron作业,每分钟或60秒运行一次我的监控脚本(通过php-cli)。在监控脚本内部:
$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调用请求的页面时,我认为它比我的当前实现更占用资源(如果我错了,请纠正我)
让我给你一些用户数量的粗略估计,这样您可以想象出我们正在承受的负载/流量:
- 包括管理员在内的聊天者数量:约800人
- 聊天室数量:约250个
- (x)聊天室管理员数量:约50人
- (x)我的老板和他的员工:
(x)- 可查看仪表板
有更好的方法吗?我的做法正确吗?