欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Laravel 中使用簡單的方法跟蹤用戶是否在線(推薦)

 更新時間:2019年10月30日 10:58:20   作者:Charlie_Jade  
最近小編在做一個需求,需要在Laravel應(yīng)用程序用戶個人資料頁面上,用戶名旁邊添加一個綠點,表示他們是否在線。下面小編給大家?guī)硪环N簡單方法實現(xiàn)Laravel 跟蹤用戶是否在線,感興趣的朋友一起看看吧

今天,我的任務(wù)是,在Laravel應(yīng)用程序用戶個人資料頁面上,用戶名旁邊添加一個綠點,表示他們是否在線。我首先想到的是,我們將需要啟動一個node.js服務(wù)器并跟蹤每個用戶的活動套接字連接。然后用當(dāng)前登錄的用戶套接字,我們可以實時更新在線狀態(tài)!唯一的問題是,這是我們目前的要求,有點超過頂部,并沒有完全必要的,直到我們的功能,需要達(dá)到第二個準(zhǔn)確性,如實時聊天。

一位同事指出,對于目前的需求,MySpace用來處理“在線”功能的方式可能就足夠了。就我們所知,MySpace用來顯示用戶是否在線的方式是基于他們在網(wǎng)站上的最后一項活動。如果他們的最后一次活動在X分鐘內(nèi),我們會顯示“在線”徽章,如果沒有,我們不會。簡單!

讓我們?yōu)橛脩舻纳洗位顒釉谟脩舯碇刑砑右粋€字段,并且在請求每個頁面時更新它。然后當(dāng)我們需要檢查用戶是否在線,我們可以將該時間戳與當(dāng)前時間戳進(jìn)行比較,如果在X分鐘內(nèi),則他們在線!雖然這可以工作得很好,這取決于你正在構(gòu)建的應(yīng)用程序,它會向數(shù)據(jù)庫添加不必要的 寫入 ,這會在某種程度上降低你應(yīng)用程序的速度。一個好的折衷辦法是將這些信息存儲在應(yīng)用程序緩存中。 緩存的好處是可以簡化這種方法,因為可以設(shè)置緩存為過期。

現(xiàn)在我們決定使用緩存實現(xiàn)這個特性,下一個問題是這個代碼應(yīng)該在哪里運行,以便它在每個請求上運行?我有兩個想法可以實現(xiàn):

  1. 創(chuàng)建一個 BaseController,讓你所有的 Controller 都繼承它
  2. 創(chuàng)建一個中間件

經(jīng)過一些思考,并意識到我需要在所有已經(jīng)編寫的構(gòu)造函數(shù)中添加對父構(gòu)造函數(shù)的調(diào)用,我選擇在中間件中實現(xiàn)。

我們有個計劃,讓我們進(jìn)入代碼!

首先,我們需要創(chuàng)建一個中間件。在終端中輸入以下命令:

php artisan make:middleware LogLastUserActivity

接下來我們打開以下php文件

app/Http/Middleware/LogLastUserActivity.php.

在其中的 handle 方法中添加下面的代碼:

if(Auth::check()) {
  $expiresAt = Carbon::now()->addMinutes(5);
  Cache::put('user-is-online-' . Auth::user()->id, true, $expiresAt);
}

接下來,我們打開 app/Http/Kernel.php 文件。如果您使用的是 Laravel 5.1 或 更早的版本, 您應(yīng)該把代碼直接放置到 $middleware 數(shù)組中。 如果您的版本是 5.2.* , 您應(yīng)該把代碼放置到 $middlewareGroups 的 web 中 。注意,一定要把代碼放到 StartSession 中間件的下方,否則 Auth 門面將不會正確在user中記錄log。我的更新配置設(shè)置如下:

protected $middlewareGroups = [
  'web' => [
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class
    \App\Http\Middleware\VerifyCsrfToken::class,
    \App\Http\Middleware\LogLastUserActivity::class,
  ],
  'api' => [
    'throttle:60,1',
  ],
];

最后一步是添加一個方法到我們的 user 對象中去檢測這個值. 在 app/User.php 我們添加下面的方法:

public function isOnline()
{
  return Cache::has('user-is-online-' . $this->id);
}

現(xiàn)在在任何頁面中你就能添加下面的方法:

@if($user->isOnline())
  user is online!!
@endif

重要提示 -- 確保在你的文件頂部使用 use 引入所有的 facades!

總結(jié)

以上所述是小編給大家介紹的Laravel 中使用簡單的方法跟蹤用戶是否在線,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • php將數(shù)據(jù)庫中的電話號碼讀取出來并生成圖片

    php將數(shù)據(jù)庫中的電話號碼讀取出來并生成圖片

    本PHP程序作用是從數(shù)據(jù)庫中讀取出手機(jī)號碼或其他數(shù)據(jù)并生成圖片,起到干擾采集防采集的作用。(英文或數(shù)字,如果要支持中文的話需要額外添加字庫)。本代碼為原創(chuàng)代碼。
    2008-08-08
  • CI(CodeIgniter)框架配置

    CI(CodeIgniter)框架配置

    今天研究了下CI框架的說明文檔,打算在下次項目中用用看。先把今天看完的內(nèi)容整理整理,基本配置非常簡單,好像在配置方面 在沒有比ci框架簡便的了。。
    2014-06-06
  • ThinkPHP結(jié)合AjaxFileUploader實現(xiàn)無刷新文件上傳的方法

    ThinkPHP結(jié)合AjaxFileUploader實現(xiàn)無刷新文件上傳的方法

    這篇文章主要介紹了ThinkPHP結(jié)合AjaxFileUploader實現(xiàn)無刷新文件上傳的方法,是ThinkPHP文件上傳中一個比較典型的應(yīng)用技巧,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • Yii框架小部件(Widgets)用法實例詳解

    Yii框架小部件(Widgets)用法實例詳解

    這篇文章主要介紹了Yii框架小部件(Widgets)用法,結(jié)合實例形式詳細(xì)分析了Yii框架小部件(Widgets)基本功能、創(chuàng)建、使用方法及操作注意事項,需要的朋友可以參考下
    2020-05-05
  • thinkphp 抓取網(wǎng)站的內(nèi)容并且保存到本地的實例詳解

    thinkphp 抓取網(wǎng)站的內(nèi)容并且保存到本地的實例詳解

    這篇文章主要介紹了thinkphp 抓取網(wǎng)站的內(nèi)容并且保存到本地的實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • smarty中post用法實例

    smarty中post用法實例

    這篇文章主要介紹了smarty中post用法,以實例形式詳細(xì)分析了在smarty中POST的具體實現(xiàn)過程,包括了配置文件的調(diào)用與模板文件的實現(xiàn),需要的朋友可以參考下
    2014-11-11
  • 詳解yii2使用多個數(shù)據(jù)庫的案例

    詳解yii2使用多個數(shù)據(jù)庫的案例

    本篇文章主要介紹了詳解yii2使用多個數(shù)據(jù)庫的案例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • PHPMailer ThinkPHP實現(xiàn)自動發(fā)送郵件功能

    PHPMailer ThinkPHP實現(xiàn)自動發(fā)送郵件功能

    這篇文章主要為大家詳細(xì)介紹了PHPMailer ThinkPHP實現(xiàn)自動發(fā)送郵件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Laravel中任務(wù)調(diào)度console使用方法小結(jié)

    Laravel中任務(wù)調(diào)度console使用方法小結(jié)

    這篇文章主要給大家簡單介紹了Laravel中任務(wù)調(diào)度console使用方法,并附上一個簡單的示例,希望對大家學(xué)習(xí)使用console能夠有所幫助
    2017-05-05
  • 實例介紹PHP的Reflection反射機(jī)制

    實例介紹PHP的Reflection反射機(jī)制

    這篇文章主要介紹了實例介紹PHP的Reflection反射機(jī)制,本文從使用Reflection獲取一個類的信息角度來介紹PHP的Reflection反射機(jī)制,需要的朋友可以參考下
    2014-08-08

最新評論