计算活动的缓存会话 Laravel。 (需要建议)
Posted
技术标签:
【中文标题】计算活动的缓存会话 Laravel。 (需要建议)【英文标题】:Count active Cache sessions Laravel. (Advice Needed) 【发布时间】:2021-12-09 05:12:17 【问题描述】:在这里遇到问题,并且几天来一直在努力寻找解决方案。 我希望能够统计我的 Laravel 应用程序中的在线用户数量。
我已经构建了一个系统,用于在管理面板的应用程序中显示在线和离线用户状态。
但是我试图获得一个计数器来显示在线用户的数值。 下面是我用于显示在线离线状态的代码。 但是现在我尝试在使用计数时调用(Cache::has('user-is-online') 但是我无法让它工作。 希望有人能像我所说的那样提供帮助。
对于我确实设法构建的内容,我使用了以下内容:
创建的中间件:
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
use Cache;
use Carbon\Carbon;
class LastUserActivity
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
if (Auth::check())
$expiresAt = Carbon::now()->addMinutes(1);
Cache::put('user-is-online-' . Auth::user()->id, true, $expiresAt);
return $next($request);
创建的控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use Cache;
class UserController extends Controller
/**
* Show user online status.
*
*/
public function userOnlineStatus()
$users = DB::table('users')->get();
foreach ($users as $user)
if (Cache::has('user-is-online-' . $user->id))
echo "User " . $user->name . " is online.";
else
echo "User " . $user->name . " is offline.";
创建的路线:
Route::get('/check', 'StatusController@userOnlineStatus');
我称之为:
<td>
@if(Cache::has('user-is-online-' . $user->id))
<span class="badge badge-warning rounded-0 w-100">Online</span>
@else
<span class="badge badge-danger rounded-0 w-100">Offline</span>
@endif
</td>
【问题讨论】:
【参考方案1】:因为您对缓存中的每个用户都有唯一的密钥。在您的情况下,您无法通过部分键找到它。您可以像在 userOnlineStatus
函数中一样保留一个计数器,然后打印结果。往下看。
/**
* Show number of online users.
*
*/
public function numberOfOnlineUsers()
$users = DB::table('users')->get();
$counter = 0;
foreach ($users as $user)
if (Cache::has('user-is-online-' . $user->id))
$counter++;
//Passing $counter to the view
return view("your_blade_file_name", ['counter' => $counter]);
在刀片文件中访问
The number of online users are $counter
【讨论】:
哇,感谢您的代码!我对 Laravel 很陌生。所以我将在我的控制器中的其他功能下添加这个功能。我是否需要配置一条新路线来获得这个?什么方法最适合我从 laravel 刀片文件中调用计数?非常感谢 如果你想将它作为一个单独的函数使用,那么你需要配置路由。将此计数器变量传递给刀片文件。我将编辑上面的答案,向您展示如何将参数传递给刀片文件。但是你会在 laravel 网站上找到更好的文档。 再次感谢您的帮助真的为我解决了这一切。我刚刚在网站上问了另一个问题,希望你有时间可以再看看!以上是关于计算活动的缓存会话 Laravel。 (需要建议)的主要内容,如果未能解决你的问题,请参考以下文章