2013-06-11 26 views
1

好的,所以我想檢查我的用戶是否在線,我認爲這樣做的一個好方法是使用laravel提供的會話表。我是一個新手,但任何人首先都可以向我解釋這些數據的含義。有人可以解釋會話表laravel

CREATE TABLE sessionsid VARCHAR(40)NOT NULL, last_activity INT(10)NOT NULL, data TEXT NOT NULL, PRIMARY KEY(id) );

last_activity是一個unix時間戳,那個對我來說很清楚。

我的ID = lGBzJ0dIWiebrwjFlkQAE19NHuNHvsPRVS7e4CRO

這等於cookie值,但這並不說所有的東西給我。

and my data = a:3:{s:5:「:new:」; a:0:{} s:5:「:old:」; a:0:{} s:10:「 csrf_token「; s:40:」XOZbMp8mrVUbu2Lk4c1cEdCoJUQIL3tSeHaztH1v「;}

這兩個意思是什麼?我怎樣才能使用它們從laravel派生出一個用戶id?

回答

1

Laravel不會直接在會話表上存儲對用戶的引用。對於擁有會話的會話系統無關緊要,並且可能會有沒有用戶連接到它們的會話(即,在有人登錄之前)。

數據列是PHP serialized所以如果你真的想讀取你可以的數據。

Laravel將會話數據分爲3類:持久性,舊的閃存數據,新的閃存數據。這就是爲什麼你會在你的粘貼代碼中找到兩個「:new:」和「:old:」爲空的數組。


你爲什麼不有你的用戶表中的「最後出現」一欄,每個用戶加載頁面時觸摸它,如果它是< x分鐘,因爲他們最後一次見到那麼他們可以考慮「線上」?

+0

感謝這是一個非常有用的答案,至少我知道我在與什麼工作知道。我已經看到laravel在會話表中確實有最後的活動,並且這似乎完全適用於我將它實現到我的用戶表中的原因。我只能回溯到laravel/sessions/database.php。你碰巧知道我在哪裏可以找到laravel用來檢查上次活動的代碼嗎? –

+0

Laravel不會在會話驅動程序之外使用會話的last_activity。它用於清除(清理)會話表中的舊會話,除此之外沒有別的。 –