我的目標是檢查我的用戶表中的所有用戶,以查看他們是否在線使用Laravel 4
。 我也對誰也沒有登錄感興趣。 稍後,我想打印出2個單獨列出的誰在線,誰不是?如何檢查所有用戶是否在Laravel 4上線?
- 是否有快速出路?
- 我使用Laravel附帶的
Auth::check()
嗎? - 我需要更新我的
database
上的任何內容嗎?
樣品
我的目標是檢查我的用戶表中的所有用戶,以查看他們是否在線使用Laravel 4
。 我也對誰也沒有登錄感興趣。 稍後,我想打印出2個單獨列出的誰在線,誰不是?如何檢查所有用戶是否在Laravel 4上線?
Auth::check()
嗎?database
上的任何內容嗎?樣品
我想一些邏輯建議給你。
之後你有,
在你登錄在功能,在某處你到底重定向前。
set is_online = '1';
//這應該保存到您的數據庫了。
在您的註銷函數中應用相同的邏輯,在重定向之前的某個地方結束。
set is_online = '0';
不要忘記保存!通過在您更新數據庫中的任何信息時執行$user->save();
。
打印列表 你可以做
For all the user()->is_online = '1' OR user()->is_online = '0'
// Do any programming logic with it, print it or whatever ...
試試看吧!如果你堅持,發佈一些代碼,我會幫你通過它。
無法知道用戶是否仍在您的網站上。你只能用一些方法來猜測它們是否是。
最常用的方法是保存用戶上次訪問頁面的時間戳。如果您說用戶在一頁上停留一分鐘,如果上次時間戳和當前時間戳之間的時間少於一分鐘,則可以說用戶處於聯機狀態。
Facebook使用一種ping功能來檢查這一點。他們每x秒發送一次ajax請求到服務器。這樣他們知道用戶仍然在網站上。
我更喜歡你的答案。你能幫我多一點嗎?如果可能的話,你能否在Laravel中提供一個快速入門代碼?我完全同意你的想法。 – iori 2014-11-24 16:07:09
最近我有同樣的問題,解決它通過以下方式(Laravel 5):
class AddLastOnlineToUsersTable extends Migration { public function up() { Schema::table('users', function (Blueprint $table) { $table->dateTime('last_online'); }); } public function down() { Schema::table('users', function (Blueprint $table) { $table->dropColumn('last_online'); }); }
不要忘記將新字段添加到$可填寫和$在用戶模式日期排列。
abstract class Controller extends BaseController { public function __construct() { $this->user = Auth::user(); if($this->user) { $this->user->last_online = Carbon::now(); $this->user->save(); } } }
public function getAllUsersOnline($seconds_since_last_activity = 300) { $last_activity = Carbon::now()->subSeconds($seconds_since_last_activity); $online_users = User::where('last_online', '>=', $last_activity)->get(['id', 'user_name']); return $online_users; }
怎麼樣,如果用戶不退出?他/她將永遠在線。 – Jerodev 2014-11-24 15:54:54
呼叫良好。 @Iggy:你有沒有這樣的事情? – iori 2014-11-24 16:02:08
您可以執行會話超時並相應地設置變量。 :D – 2014-11-24 16:02:51