ugrás a tartalomhoz

Symfony2.8 - Service - Session

DarkHcK · 2017. Ápr. 4. (K), 11.04
Sziasztok!

Szeretném a segítségeteket kérni, mert tanácstalan vagyok.
Problémám, illetve a szituáció a következő:
Van egy "beléptető" alkalmazás, amely áll egy kliens és egy szerver oldalból, s a kettő rest -en keresztül kommunikál egymással. A probléma, hogy ha egy felhasználó kétszer egymás után gyorsan lép be, akkor két ugyan olyan folyamat indul számára.


Arra gondoltam, hogy írok egy service -t, ami három dolgot képes végrehajtani:
1. letárolja a felhasználó azonosítóját a session -be
2. eltávolítja a felhasználó azonosítóját a session -ből
3. ellenőrzi, hogy a felhasználó azonosítója megtalálható -e a session -ben


Az elképzelt folyamat:
1 - a felhasználó elindítja a kérést
2 - ellenőrzöm, hogy a session -ben szerepel -e az azonosítója
3.1 - ha nem szerepel, akkor hozzáadom a session -höz, s elkezdem kiszolgálni a kérését.
3.2 - ha szerepel, akkor eldobom a kérést
4 - a válasz küldése előtt kitörlöm a sessoin -ből a felhasználó azonosítóját


A problémám, hogy minden egyes kérésnél, üres a session, és a session_id is más.
Hiába van set/get, mindig null -t kapok vissza.

Ha valakinek bármi ötlete/tanács van, az ne habozzon. :)

Üdv
 
1

Symfony

janoszen · 2017. Ápr. 4. (K), 12.02
Sok rosszat tudok mondani a Symfonyrol, de a user kezelesre van koncepciojuk. Arra semmi szukseg hogy kezzel matasd a sessionoket. Ne irj kezzel user managelot, szepen megcsinalja neked a Symfony. Irjal hozza user providert es azzal jo esellyel boldog leszel.
2

Félreértettél

DarkHcK · 2017. Ápr. 4. (K), 12.45
Nem a user kezeléssel van a problémám. Amit szeretnék megvalósítani, az a részleges szinkron request - response.

Amíg "X" felhasználó a kérésére nem kapott választ, addig ne indíthasson újat, viszont "Y" és "Z" felhasználók "X" felhasználótól függetlenül indíthassanak kérést.

Ezt próbáltam megoldani a sessionel, de az mindig üres.

Amíg folyamatban van a válasz előállítsa, addig tárolnám a felhasználó azonosítóját egy úgymond várakozási listán.

Ha beesik még egy kérés ugyan attól a felhasználótól, és rajta van a várakozási listán, akkor az új kérése megszakításra kerül.

Ha előállt a válasz, akkor eltávolítom a várakozási listáról, s újra lehetősége van kérést indítani.

Remélem így érthetőbb a problémám.
3

rest api

Pepita · 2017. Ápr. 5. (Sze), 15.40
Rest apin én ezt szerver oldalon fognám meg, nem kell session.
Amikor érkezik a request, bedobnám egy logapi táblába User Id val együtt, mondjuk 1 es státusszal. Közvetlenül amikor a response küldöm, update státusz 2 re.
Amikor request jön, select a user alapján, van e 1 státusszal neki rekord.
Ha van: 0 val teszem be, és hibát dobok.

Kb ennyi szerintem. (Nyilván van erre gyorsabb és jobb megoldás is, mint a db insert )