NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Ukládání poslední aktivity uživatele

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Martin Konečný (pavelco1998):8.2.2017 9:54

Ahoj,

jak řešíte, když v aplikaci chcete ukládat čas poslední aktivity uživatele? Ať je pak třeba v profilu vidět "Aktivní před 3 minutami a 20 sekundami".
Aktuálně to řeším tak, že po každém načtení stránky se v tabulce uživatele provede UPDATE na aktualizaci času. Nicméně mi přijde trochu zbytečné s každým požadavkem u každého uživatele provádět úpravu v DB.
Dá se to řešit nějak rozumněji?

Napadlo mě ukládat to postupně do cache a do DB to uložit až v případě, kdy je to potřeba - tzn. když se zažádá o "přečtení" tohoto času. Problém ale je, že když se cache smaže, nedojde k dané aktualizaci a informace o poslední aktivitě nebude správná.

Vím, že na produkčním serveru je i UPDATE rychlý, ale minimálně na localhostu se mi nelíbí, jak se všechny SELECTy drží v řádu 5ms a jediný ten UPDATE jede 60 :D Nedokážu odhadnout, jaký by to mělo vliv, když by ten server byl více zatížen (v produkci).

Jak to řešíte vy?

Editováno 8.2.2017 9:56
Odpovědět
8.2.2017 9:54
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Martin Konečný (pavelco1998):8.2.2017 9:57

UPDATE se pokládá jednoduše takto, sloupec id je pochopitelně primární klíč:

UPDATE user
SET last_activity = CURRENT_TIMESTAMP
WHERE id = 123
Nahoru Odpovědět
8.2.2017 9:57
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.