亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Laravel 中檢查用戶是否在線

在 Laravel 中檢查用戶是否在線

PHP
元芳怎么了 2021-10-22 15:09:17
我是 Laravel 的初學者。我在我的項目中使用 Laravel 5.8。我有這個模型:class User extends Authenticatable implements MustVerifyEmail{    use Notifiable;    public static $roles = [];    protected $fillable = ['last_activity', 'enable', 'name', 'surname', 'email', 'email_verified_at', 'password', 'counter', 'url_address', 'isCompany', 'isMailing'];    protected $hidden = [        'password', 'remember_token',    ];    public function roles()    {        return $this->belongsToMany('App\Role');    }    public function mainRole()    {        return $this->hasOne('App\Role');    }    public function comments()    {        return $this->hasMany('App\Comments');    }    public function hasRole(array $roles)    {        foreach ($roles as $role) {            if (isset(self::$roles[$role])) {                if (self::$roles[$role]) return true;            } else {                self::$roles[$role] = $this->roles()->where('name', $role)->exists();                if (self::$roles[$role]) return true;            }        }        return false;    }    public function loginHistory()    {        return $this->hasMany('App\UserLoginHistory');    }    public function companies()    {        return $this->belongsTo('App\Companies', 'company_id');    }    public function images()    {        return $this->hasManyThrough('App\UploadedFiles', 'App\User', 'id', 'photoable_id');    }    public function scopeOfRoleType($query, $types)    {        return $query->whereHas('roles', function ($q) use ($types) {            $q->whereIn('name', $types);        });    }}在 last_activity - 我有日期,例如 2019-07-16 10:26:12我需要在我的樹枝頁面上顯示:@foreach ($usersList as $user)User name: $user->name is now ...... (offline or online)@endforeach我想看看用戶是在線還是離線。我想這樣的事情:public function isOnline()        {            return .....        }但我不知道如何檢查此活動:(
查看完整描述

2 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

這取決于您如何定義在線。Http 是一種無狀態協議。


但是,您可以將在線定義為在過去五分鐘內處于活動狀態。這樣你就可以實現這樣的功能:


public function isOnline(): bool

{

    return $this->last_activity->gt(Carbon\Carbon::now()->subMinutes(5));

}

還要確保將 last_activity 標記為日期:


protected $dates = ['last_activity'];

隨著您的應用程序的增長,我會考慮另一種解決方案,而不是將所有用戶從數據庫加載到內存中。


查看完整回答
反對 回復 2021-10-22
?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

我想“在線”是指使用網站并與之互動。您必須確定一個時間間隔,在該時間間隔內,用戶可以被視為“在線”或“離線”并且不再進行交互。也許……10分鐘?將“上次活動”字段與當前時間進行比較,以查看它們是否處于活動狀態。用于示例Carbon::now()獲取當前時間并進行比較。


查看完整回答
反對 回復 2021-10-22
  • 2 回答
  • 0 關注
  • 276 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號