今天,我的任务是,在 laravel 应用程序用户个人资料页面上,用户名旁边添加一个绿点,表示他们是否在线。我首先想到的是,我们将需要启动一个 node.js 服务器并跟踪每个用户的活动套接字连接。然后用当前登录的用户套接字,我们可以实时更新在线状态!唯一的问题是,这是我们目前的要求,有点超过顶部,并没有完全必要的,直到我们的功能,需要达到第二个准确性,如实时聊天。
一位同事指出,对于目前的需求,myspace 用来处理 “在线” 功能的方式可能就足够了。就我们所知,myspace 用来显示用户是否在线的方式是基于他们在网站上的最后一项活动。如果他们的最后一次活动在 x 分钟内,我们会显示 “在线” 徽章,如果没有,我们不会。简单!
让我们为用户的上次活动在用户表中添加一个字段,并且在请求每个页面时更新它。然后当我们需要检查用户是否在线,我们可以将该时间戳与当前时间戳进行比较,如果在 x 分钟内,则他们在线!虽然这可以工作得很好,这取决于你正在构建的应用程序,它会向数据库添加不必要的写入,这会在某种程度上降低你应用程序的速度。一个好的折衷办法是将这些信息存储在应用程序缓存中。 缓存的好处是可以简化这种方法,因为可以设置缓存为过期。
现在我们决定使用缓存实现这个特性,下一个问题是这个代码应该在哪里运行,以便它在每个请求上运行?我有两个想法可以实现:
创建一个 bacontroller,让你所有的 controller 都继承它
创建一个中间件
经过一些思考,并意识到我需要在所有已经编写的构造函数中添加对父构造函数的调用,我选择在中间件中实现。
我们有个计划,让我们进入代码!
首先,我们需要创建一个中间件。在终端中输入以下命令:
php artisan make:middleware loglasturactivity
接下来我们打开以下 php 文件
app/http/middleware/loglasturactivity.php.
在其中的 handle 方法中添加下面的代码:
1 if(auth::check()) {2 $expiresat = carbon::now()->addminutes(5);3 cache::put('ur-is-online-' . auth::ur()->id, true, $expiresat);4 }
接下来,我们打开 app/http/kernel.php 文件。如果您使用的是 laravel 5.1 或 更早的版本, 您应该把代码直接放置到$middleware数组中。 如果您的版本是 5.2.* , 您应该把代码放置到$middlewareg2012年6月英语四级作文roups的 web 中 。注意,一定要把代码放到startssion中间件的下方,否则 auth 门面将不会正确在 ur 中记录 log。我的更新配置设置如下:
1 protec根号三约等于多少ted $middlewaregroups = [ 2 'web' => [ 3 \app\http\middleware\encryptcookies::class, 4 \illuminate\cookie\middleware\addqueuedcookiestorespon::class, 5 \illuminate\ssion\middleware玄武岩是什么岩\startssion::class, 6 \illuminate\view\middleware\shareerrorsfromssion::class 7 \app\http\middleware\verifycsrftoken::class, 8 \app\http\mi马拉拉ddleware\loglasturactivity::class, 9 ],10 'api' => [11 'throttle:60,1',12 ],13 ];
最后一步是添加一个方法到我们的 ur 对象中去检测这个值。在 app/ur.php 我们添加下面的方法:
public function isonline(){return cache::has('ur-is-online-' . $this->id);}
现在在任何页面中你就能添加下面的方法:
1 @if($ur->isonline())2 ur is online!!3 @endif
重要小武当山提示 — 确保在你的文件顶部使用 u 引入所有的 facades!
我希望上面这些能帮助到你们解决这个问题!
本文发布于:2023-04-07 20:26:59,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/fff4ac67c32240b1e384a38f57af6807.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP Laravel 中使用简单的方法跟踪用户是否在线.doc
本文 PDF 下载地址:PHP Laravel 中使用简单的方法跟踪用户是否在线.pdf
留言与评论(共有 0 条评论) |