payskin Posted January 31, 2012 Posted January 31, 2012 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?
[OP]Destroy-man Posted January 31, 2012 Posted January 31, 2012 PHP-ben nincs IsPostBack, mint az ASP.NET-ben? Szerk.: Akkor válaszolok a kérdésemre. Nincs, de van rá megoldás: http://stackoverflow.com/questions/6831451...back-net-in-php
arpsoft Posted January 31, 2012 Posted January 31, 2012 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)
Pjotr Posted January 31, 2012 Posted January 31, 2012 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;
payskin Posted January 31, 2012 Author Posted January 31, 2012 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...
Pjotr Posted January 31, 2012 Posted January 31, 2012 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.
payskin Posted January 31, 2012 Author Posted January 31, 2012 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...
Pjotr Posted February 1, 2012 Posted February 1, 2012 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.
arpsoft Posted February 1, 2012 Posted February 1, 2012 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.
payskin Posted February 9, 2012 Author Posted February 9, 2012 Bocs, nincs elfelejtve a dolog, csak el vagyok havazva. Tolok majd egy táblastruktúra-dumpot alkalomadtán.
payskin Posted April 20, 2012 Author Posted April 20, 2012 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?
Pjotr Posted April 20, 2012 Posted April 20, 2012 Elküldöd e-mailben/Dropbox? Mielőtt magyarázás lenne, úgyis meg kell néznem, miről is van szó.
payskin Posted April 21, 2012 Author Posted April 21, 2012 Dropbox, jó ötlet! Hogy hívják a Dropbox useredet?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now