真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Laravel實(shí)現(xiàn)跟蹤用戶是否在線功能的方法

小編給大家分享一下Laravel實(shí)現(xiàn)跟蹤用戶是否在線功能的方法,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)建站長(zhǎng)期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為良慶企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,良慶網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

Laravel 中使用簡(jiǎn)單的方法跟蹤用戶是否在線

今天,我的任務(wù)是,在 Laravel 應(yīng)用程序用戶個(gè)人資料頁(yè)面上,用戶名旁邊添加一個(gè)綠點(diǎn),表示他們是否在線。

我首先想到的是,我們將需要啟動(dòng)一個(gè) node.js 服務(wù)器并跟蹤每個(gè)用戶的活動(dòng)套接字連接。然后用當(dāng)前登錄的用戶套接字,我們可以實(shí)時(shí)更新在線狀態(tài)!

唯一的問(wèn)題是,這是我們目前的要求,有點(diǎn)超過(guò)頂部,并沒(méi)有完全必要的,直到我們的功能,需要達(dá)到第二個(gè)準(zhǔn)確性,如實(shí)時(shí)聊天。

一位同事指出,對(duì)于目前的需求,MySpace 用來(lái)處理 “在線” 功能的方式可能就足夠了。就我們所知,MySpace 用來(lái)顯示用戶是否在線的方式是基于他們?cè)诰W(wǎng)站上的最后一項(xiàng)活動(dòng)。

如果他們的最后一次活動(dòng)在 X 分鐘內(nèi),我們會(huì)顯示 “在線” 徽章,如果沒(méi)有,我們不會(huì)。簡(jiǎn)單!

讓我們?yōu)橛脩舻纳洗位顒?dòng)在用戶表中添加一個(gè)字段,并且在請(qǐng)求每個(gè)頁(yè)面時(shí)更新它。然后當(dāng)我們需要檢查用戶是否在線,我們可以將該時(shí)間戳與當(dāng)前時(shí)間戳進(jìn)行比較,如果在 X 分鐘內(nèi),則他們?cè)诰€!

雖然這可以工作得很好,這取決于你正在構(gòu)建的應(yīng)用程序,它會(huì)向數(shù)據(jù)庫(kù)添加不必要的 寫入,這會(huì)在某種程度上降低你應(yīng)用程序的速度。

一個(gè)好的折衷辦法是將這些信息存儲(chǔ)在應(yīng)用程序緩存中。 緩存的好處是可以簡(jiǎn)化這種方法,因?yàn)榭梢栽O(shè)置緩存為過(guò)期。

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

創(chuàng)建一個(gè) BaseController,讓你所有的 Controller 都繼承它

創(chuàng)建一個(gè)中間件

經(jīng)過(guò)一些思考,并意識(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

接下來(lái)我們打開(kāi)以下 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);
 }

接下來(lái),我們打開(kāi) 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ì)象中去檢測(cè)這個(gè)值。

在 app/User.php 我們添加下面的方法:

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

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

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

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

看完了這篇文章,相信你對(duì)“Laravel實(shí)現(xiàn)跟蹤用戶是否在線功能的方法”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


新聞標(biāo)題:Laravel實(shí)現(xiàn)跟蹤用戶是否在線功能的方法
轉(zhuǎn)載來(lái)于:http://weahome.cn/article/gcpeco.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部