Laravel管理在线用户列表

时间:2015-11-24 15:38:34

标签: php laravel laravel-4

我想保留一份" Online"每个帐户的用户。

我在我的应用中每隔五秒钟对服务器进行一次轮询,告诉它“这个用户目前在线”#39;

然后我更新所有其他已连接的用户界面,以显示“此用户已在线。”

我现在处理的问题是,一旦服务器没有收到“嘿,我在网上”#39;通知x秒,我想继续标记他们'离线'。

我正在使用laravel并且想到也许事件会起作用,可能是开始和事件,睡眠时间为10秒,并检查用户的时间戳是否最后“登记入住”'大于十秒。但这引发了拉格雷斯事件排队的问题?我知道你可以对它们进行排队,这意味着常规事件只会在同一服务器请求上运行而不能按预期工作。

如果我对他们进行Q测试,只有一个听众就不会因为所有这些问题而对q进行拥挤等待'线程试图重置一个可怜的在线'布尔?也许是多个听众?

在某些事情发生/不发生之后,让服务器重置数据库值x秒的最简单方法是什么?

1 个答案:

答案 0 :(得分:1)

Php是同步的,所以涉及运行时队列的任何事情都会给你带来很大麻烦。

我知道laravel 5有一些队列系统(我自己没有使用它),但你需要创建一些消耗该队列的东西。

最好的办法是重新阅读laravel中的队列文档,并查看cron作业。

这些是可以设置为按设定的时间间隔运行的自动化任务。然后,他们可以处理任何持久化队列并更新您的数据库。

更新:

为什么要保存布尔值?您只需在数据库中保存时间戳last_seen即可。然后,代替检查布尔值的代码以查看用户是否在线,它可以只将last_seen标记与当前时间戳进行比较。如果大于x秒,则假定用户脱机。使用laravel,您甚至可以将此逻辑添加到数据库表的雄辩模型中。这意味着逻辑不必在需要的任何地方重复。