最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

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

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

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

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 門面將不會(huì)正確在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',
  ],
];

最后一步是添加一個(gè)方法到我們的 user 對(duì)象中去檢測這個(gè)值. 在 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 中使用簡單的方法跟蹤用戶是否在線,希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • laravel5.1框架基礎(chǔ)之路由詳解

    laravel5.1框架基礎(chǔ)之路由詳解

    這篇文章主要介紹了laravel5.1框架基礎(chǔ)之路由,結(jié)合實(shí)例形式分析了Laravel框架中路由的概念、原理、基本路由操作與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • ThinkPHP入口文件設(shè)置及相關(guān)注意事項(xiàng)分析

    ThinkPHP入口文件設(shè)置及相關(guān)注意事項(xiàng)分析

    這篇文章主要介紹了ThinkPHP入口文件設(shè)置及相關(guān)注意事項(xiàng),以注釋的形式詳細(xì)分析了入口文件設(shè)置時(shí)相關(guān)設(shè)置項(xiàng)的含義與設(shè)置技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • PHP Smarty生成EXCEL文檔的代碼

    PHP Smarty生成EXCEL文檔的代碼

    PHP結(jié)合Smarty產(chǎn)生EXCEL文檔 1,首先在EXCEL (office 2003)里生成一個(gè)模板,然后存成 xml表格。 2,修改這個(gè) xml 文件,做成 smarty 的模板。 3,然后,就是 綁定變量,輸出就行了。
    2008-08-08
  • CI(CodeIgniter)框架中URL特殊字符處理與SQL注入隱患分析

    CI(CodeIgniter)框架中URL特殊字符處理與SQL注入隱患分析

    這篇文章主要介紹了CI(CodeIgniter)框架中URL特殊字符處理與SQL注入隱患,結(jié)合實(shí)例形式分析了CodeIgniter框架中針對(duì)特殊字符的過濾及SQL注入隱患的相關(guān)原理,需要的朋友可以參考下
    2019-02-02
  • PHP循環(huán)輸出指定目錄下的所有文件和文件夾路徑例子(簡單實(shí)用)

    PHP循環(huán)輸出指定目錄下的所有文件和文件夾路徑例子(簡單實(shí)用)

    這篇文章主要介紹了一個(gè)簡單實(shí)用的PHP循環(huán)輸出指定目錄下的所有文件和文件夾路徑例子,需要的朋友可以參考下
    2014-05-05
  • zend框架實(shí)現(xiàn)支持sql server的操作方法

    zend框架實(shí)現(xiàn)支持sql server的操作方法

    這篇文章主要介紹了zend框架實(shí)現(xiàn)支持sql server的操作方法,結(jié)合實(shí)例形式分析了zend框架的相關(guān)代碼修改、配置文件設(shè)置與相關(guān)問題注意事項(xiàng),需要的朋友可以參考下
    2016-12-12
  • PHP aes (ecb)解密后亂碼問題

    PHP aes (ecb)解密后亂碼問題

    這篇文章主要介紹了PHP aes (ecb)解密后亂碼問題的解決方法,十分的簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • Yii2.0 Basic代碼中路由鏈接被轉(zhuǎn)義的處理方法

    Yii2.0 Basic代碼中路由鏈接被轉(zhuǎn)義的處理方法

    這篇文章主要介紹了Yii2.0 Basic代碼中路由鏈接被轉(zhuǎn)義的處理方法的相關(guān)資料,本文圖文并茂介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09
  • Yii2使用dropdownlist實(shí)現(xiàn)地區(qū)三級(jí)聯(lián)動(dòng)功能的方法

    Yii2使用dropdownlist實(shí)現(xiàn)地區(qū)三級(jí)聯(lián)動(dòng)功能的方法

    這篇文章主要介紹了Yii2使用dropdownlist實(shí)現(xiàn)地區(qū)三級(jí)聯(lián)動(dòng)功能的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了dropdownlist下拉列表實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)調(diào)用的具體步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-07-07
  • php中的比較運(yùn)算符詳解

    php中的比較運(yùn)算符詳解

    如果比較一個(gè)整數(shù)和字符串,則字符串會(huì)被轉(zhuǎn)換為整數(shù)。如果比較兩個(gè)數(shù)字字符串,則作為整數(shù)比較。此規(guī)則也適用于 switch 語句
    2013-10-10

最新評(píng)論

志丹县| 黄骅市| 宁晋县| 东安县| 榆中县| 英吉沙县| 石河子市| 西盟| 佛冈县| 金湖县| 九台市| 鸡东县| 松滋市| 宜川县| 碌曲县| 滦平县| 互助| 昌江| 龙泉市| 辛集市| 曲麻莱县| 平乐县| 阜新| 波密县| 琼海市| 乌拉特中旗| 正镶白旗| 道真| 扎囊县| 睢宁县| 玛曲县| 顺昌县| 中宁县| 深水埗区| 马边| 平阴县| 凤庆县| 晋中市| 仪征市| 蒙山县| 宝鸡市|