Többszörös HTMl POST üzenet feldolgozása (kész)

Sziasztok!

Ismét szeretném borzolni az idegeitek.

Elméleti kérdésem, mely úton vagy több eszköz bevetésével oldanátok meg a problémát:

Vannak bizonyos oldalak ahol a kliens többször ki tudja adni a post üzenetet. Pl webshopok tétel rögzítésének duplázására gondolok

Hogyan fognátok ezt meg?

Pl: JavaScriptben néznétek, hogy van e kérés aktívan beküldve? (de mi van ha pl a parasztnak megszakad a nete, majd az os újraküldi azt)

vagy szerver oldalon folyton egy ellenőrző queryt futtatnál minden meghíváskor, hogy nem e az éppen most küldött adat az előzővel egyezik? (ez viszont a kiszolgáló erőforrását eszi)

Köszi

Hozzászólások

Html page post helyett ajax post, a gomb letilthato a post alatt. Nekem bevalt.

Azert altalaban szokonapokon 1x fordul elo ilyen, plane ha a valaszidot 10ms korul tartod. 

szerver oldalon generált egyedi request tokennel

Miért is?

Gondolom logolsz. Log:

  • REQID-t megkezdtem feldolgozni (REQID unique lévén ID)
  • Ilyen REQID más feldolgozás alatt (SQLSTATE hiba)
  • REQID feldolgozás leállt

Ez a standard erőforrásod.

Márha rendesen meg van tervezve a cucc. De más logika is lehet, ahol a normál erőforrás felhasználás hibáján észreveszed a duplikátumot.

A szerveren az a tipikus, hogy minden felhasználóhoz tartozik egy session is. Eleve ezt a sessiont már ki kell venni egy "adatbázisból" minden kéréshez. A session objektumon belül lehet tartani ezt a tokent, vagy tokenek halmazát (szerintem elég lehet egy számláló is), nem is jelent plusz erőforrást így a kikeresése.

Ezeknek a gyakran használt adatoknak az előbányászására pedig a trükk az, hogy nem SQL adatbázisba tesszük, hanem egy ilyen célra alkalmasabb területre:

 * Vannak programnyelvek, amikben egyetlen processz a szerver, ami nem indul újra két hívás között. Ezeknek simán a memóriájában - pl HEAP - tárolhatod egy map típusú struktúrában (hash vagy tree). Egy ilyenből kikeresni egy kulcsot nagyon kevés idő, nagyságrendileg kevesebb, mint egy hagyományos SQL-t végrehajtani (már csak azért is, mert az SQL ugye másik processzben fut, stb, tehát több kontextusváltás történik mire egy ilyen lefut.) Egy ilyen rendszerrel annyira gyors Web szervert lehet csinálni, hogy aki query-nkénti SQL-ekben gondolkodik, az csak kamillázik, hogy milyen rövid idő alatt is ki lehet szolgálni egy lekérést.

Én például Java+embedded Jetty alapon szoktam webes alkalmazást fejleszteni, az alap session handlerrel simán a processz memóriájában vannak az ilyen adatok map-ekben. Itt például vannak mikrobenchmarkok arra, hogy mennyi idő egy map-ből kivenni egy értéket: https://www.baeldung.com/java-collections-complexity

 * Ha mindenképpen két lekérés között állapot megőrzés nélküli programnyelvet kell használni, akkor is vannak ilyen optimalizált shared memory alapú "adatbázisok", ezek használatával szintén sokkal gyorsabbak lehetünk, mint SQL-lel.

Jah, mint a kettő okés és kombinálható is.

Csináld meg normálisan a webshopodat, hogy minden eshetőségre fell legyen készítve az oldaladról. Majd utána parasztozd le a potenciális vásárlódat. Hülye gyerek.

hűha, webshoptól és webtől függetlenül, látom te még nem találkoztál olyan userrel az IT téren, support téren, aki felhívott, hogy "nem nyitja meg a programot a rencccccer" -> mire odaértél addigra nyitva volt 325235 darab Word / Excel / Outlook / bármiegyéb. ... Persze ez nem összehasonlítható egy webshopos lófasz gombbal, amire amúgy ugyan úgy rá lehet tenyerelni szerintem, itt a hupon is vannak dupla posztok néha, tuti itt is valami hülye gyerekek csinálják az egészet...

Szánalom komment +1 -et megnyerted ezzel. Trollkodásnak is szánalmas volt.

ps.: Bár látom kiakadtál a parasztozáson, az vesse a kérdezőre az első követ aki L1-2 supportként nem rakta még úgy le a telefont hogy ez a büdös p* ez a hülye p* ez a balfasz* és sorolhatnánk az IT support telefon letétel utáni jelzőket ... Ha magadra vetted, akkor ne kattingass olyan gyorsan  :)

mekkora igazad van :-D Tényleg nem bántásnak írtam, de nagyon élem a krix a szavaid. Annyi ilyen story van, hogy reggelig lehetne róla beszélni. Itt mindenki jön, hogy dehát felhasználó, neki nem kell hozzá érteni... Erre én: Autóhoz sem kell de jogsi még is kell hozzá... Sajnos vannak az ismerőseim között igen változatosak:-D

"Nyomd meg az úszó embert" én: tessék? "az aszó ember aki kinn van a vízből"  én pár másodperc után: Basszus te a floppy ikonra gondolsz? XD

Vagy amikor a "simogatos" telefon lassú ezért koppintsuk erősebben... én: what??

POST után redirect, hogy sima F5-re ne postolja újra. Plusz CSRF token.

Token lett.

PHP a meghívott ajax területre berak egy tokent. Híváskor a másik oldal ellenőrzi, hogy volt e már ez a token, ha nem akkor elvégzi a műveleteket, majd visszafrissít egy új tokenre a klienst. Adatbázis lett, mert így hiba keresés miatt "űrlapidőt" is látok, kezelő feldolgozási időt nézhetek. (Ez egy gomb nyomkodásos mérleg cucc)

Köszönöm írásaitok.