【发布时间】: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>
【问题讨论】:
标签: php laravel twitter-bootstrap bootstrap-4