Jump to content
GSForum - Segélyvonal

Gyorstüzelõk elleni védelem


payskin
 Share

Recommended Posts

payskin

Mostanában egyre gyakrabban fordul elõ, hogy olyan helyeken, ahol meg kell nyomni egy gombot, az a drága ügyfél duplán kattint, mindenféle anomáliákat okozva.

 

Van erre valami egyetem megoldás azon túl, hogy JS figyeli a gombnyomást és azonnal elcsapja onnan gombot, ahogy megnyomták? Egyáltalán elég gyors ez vajon ahhoz, hogy ne lehessen kétszer megnyomni? Tapasztalat, valaki?

Link to comment
Share on other sites

arpsoft

Ugyan ezzel küzdök egy ideje. A fenti linkelt oldal sajnos nem megoldás, még akkor sem, ha a szkript eldob egy másik oldalra, ha végzett a feldolgozással, mert a böngészők simán meghívják kétszer egymás után az eredeti oldalt, két külön szálon. Én egyelőre - a javascriptre nem gondoltam még - csak olyan megoldást találtam ami ellenőrzi, hogy rövid időn belül történik-e ugyan az az esemény újra meg újra. Ha igen, akkor csak az első esemény fut le, és az általa generált eredményt adja vissza a felhasználónak az összes többi is. Így úgíy tűnik a felhasználó számára, mintha minden rendben lenne. (Csak ez meg nem nevel a helyes használatra)

Link to comment
Share on other sites

Pjotr

Gombnyomásra le kell tiltani a gombot;

Formküldésre eseménykezelõt kell rakni egyszeri elküldés után, hogy ne lehessen elküldeni újra (return false);

 

Szerveroldalon:

 

Minden formhoz kell egy egyedi azonosító (mindig más-más, nem egy és ugyanaz), SESSION-be tárolni;

Vissza kell küldeni mindig;

Ellenõrizni kell (ha nem okés, nincs feldolgozás);

CSAK EGYSZER HASZNÁLHATÓ - ellenõrzés után ki kell venni a SESSION-bõl;

Link to comment
Share on other sites

payskin

A redirect oké miután a formfeldolgozó folyamat lezajlott. De a gomb megnyomásakor ez nem tud működni: a duplaklikk ideje és a feldolgozó futási ideje közt bitang nagy különbség van, több nagyságrend.

 

Igen, én is gombeltűnős vagy letiltós JS megoldáson gondolkodom, de tetszik ez a $_SESSION-ös dolog is, amivel talán meg lehetne akadályozni, hogy amikor a vásárló lusta kivárni a 10-30 másodpercet, amíg létrejön a rendelése (karácsony előtt, amikor terhelt a MySQL, néha eltart ennyi ideig), elkezdi nyomkodni az F5-öt, és így a normális rendelése mellett csináljon még 4-5 ürest.

 

Az a durva, hogy a probléma most nem a karácsonyi, terhelt környezetben merül fel, hanem egy viszonylag egyszerű, egy adott termékkezelési folyamatot vezénylő PHP-ban, aminek a végén van egy gomb, aminek megnyomásakor mindenféle dolog történik az adott termékekkel a folyamat lezárásaként. A derék termékkelező embereknek meg vagy remeg az ujja, vagy rossz az egere, vagy nem tudom, de tudnak olyat csinálni, hogy a log táblában másodpercre azonos pillanatban lezavarják kétszer a lezárási folyamatot ugyanarra a termékre, mindenféle anomáliát okozva ezáltal. Én meg vakarom a buksi fejem, hogy de ezt hogy...

Link to comment
Share on other sites

Pjotr

Meg kellene nézni, minden rendben van-e az adatbázissal (indexek), tárolt eljárások is segíthetnek, de a mysql korszerû beállítása is sokat dobhat.

Link to comment
Share on other sites

payskin

Na, erre mondjál egy embert, aki ért ehhez, meg lehet keresni, és nem azzal kezdi, hogy 2 millió forint.

 

Az indexek szerintem rendben vannak, tárolt eljárásaink nincsenek, a MySQL pedig egészen biztosan nincs korszerûen beállítva, mint ahogy az adatszerkezet is vérzik valószínûleg több sebbõl, de nekem meg folyamatosan "én ehhez csíra vagyok" érzésem van...

Link to comment
Share on other sites

Pjotr

Az adatbázis szerkezetét mindenestül én is szívesen megnézném, a MySQL-en pedig az dobna, ha több memóriát kapna.

Link to comment
Share on other sites

arpsoft

A tárolt eljárások is sokat segíthetnek, mert az optimalizáló elõre tud dolgozni velük, nem kezd el szüttyögni, amikor megkapja a két oldalas insert into from select-et.

Link to comment
Share on other sites

  • 2 weeks later...
payskin

Bocs, nincs elfelejtve a dolog, csak el vagyok havazva. Tolok majd egy táblastruktúra-dumpot alkalomadtán.

Link to comment
Share on other sites

  • 1 month later...
Pjotr

? :)

Link to comment
Share on other sites

payskin

Nos... öhm... hamarosan...

Link to comment
Share on other sites

  • 4 weeks later...
Pjotr
IPB kép
Link to comment
Share on other sites

KGigi
:fetreng:
Link to comment
Share on other sites

payskin

:lol:

 

Jelenleg 155 tábla van, ebből kb. 120-130 éles. Ha az egészet kidumpolom és odaadom, az jó úgy? Mert attól félek, némi magyarázatra szorulna a dolog, de azt hogy oldjuk meg? Ahhoz már kéne valami privát beszélgetős hely.

---

Kidumpoltam, 127 tábla, 90K. Hogyan tovább? :hááát:

Link to comment
Share on other sites

Pjotr

Elküldöd e-mailben/Dropbox? Mielőtt magyarázás lenne, úgyis meg kell néznem, miről is van szó. :)

Link to comment
Share on other sites

payskin

Dropbox, jó ötlet! Hogy hívják a Dropbox useredet?

Link to comment
Share on other sites

Pjotr

E-mailemet tudod, megtalálsz.

Link to comment
Share on other sites

payskin

És tényleg.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...