[英]Count active Cache sessions Laravel. (Advice Needed)
在這里遇到了一個問題,幾天來一直在努力尋找解決方案。 我希望能夠計算我的 Laravel 應用程序中的在線用戶數量。
我已經內置了一個系統,用於在管理面板的應用程序中顯示在線和離線用戶狀態。
然而,我試圖讓一個計數器只顯示在線用戶的數值。 下面是我用來顯示在線離線狀態的代碼。 但是現在我試圖在使用 count(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>
因為您對緩存中的每個用戶都有唯一的鍵。 在您的情況下,您無法通過部分鍵找到它。 您可以像在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++;
}
}
echo "Number of online users: " . $counter;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.