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);
}