Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

binggle's avatar

how to retrieve all alive sessions including another uses session?

HI . I want all users sessions data as admin of website.

I am using redis for session driver .

How can I get this ?

0 likes
2 replies
binggle's avatar

Thanks for comments.

I got solved my problem .

I leave my code here for someone who are looking for same prob.

in .env


CACHE_DRIVER=redis
SESSION_DRIVER=redis

.. in SessionCheck middleware

namespace App\Http\Middleware;


use Carbon\Carbon;

use Closure;

use Illuminate\Support\Facades\Redis;


class SessionCheck

{

    private $key="user_live_time"; 

    public function handle($request, Closure $next)

    {
        $response = $next($request);

        $user = auth()->user();
        $user_id = $user->id;
        $uid= $user->uid;
        if( $uid =='admin') {
            return $response;
        }

        $values = Redis::command('HSET', [ $this->key, $uid , Carbon::now()->addMinute()]);
        return $response;
    }

} 

.. in Route.php

Route::group(['middleware'=>['auth', 'SessionCheck' ] ] , function(){

   Route::....


});

.. in Controller ..

function get_live_users(){

              $key="user_live_time";
              $current_users = [];
              $today_users = [];

              $sessions = Redis::command('HGETALL', [ $key]);

              $now = Carbon::now();
              foreach( $sessions as $uid => $session ){
                  $diff = $now->diffInSeconds( $session) ;
                  if( $diff <=60){
                      $current_users[]= $uid ;
                  } elseif( $diff < 60 * 60 * 24 ) {
                      $today_users[] = $uid ;
                  } else{
                      Redis::command('HDEL', [ $key, $uid]);
                  }
              }

              $today_users =  array_merge ( $current_users, $today_users);
              $current_users = $current_users ; 

              $users = User::whereIn('uid', $current_users)->paginate($perPage);
              return response()->json($users);
}


2 likes

Please or to participate in this conversation.