Avatar billede triggy Nybegynder
03. november 2006 - 17:58 Der er 7 kommentarer og
1 løsning

afbrudt forbindelse

Jeg har lavet en web-applikation, der opretter ordrer i et regnskabsprogram.
Alt fungerer som det skal men...

For et par uger siden, var det et lynnedslag der hvor systemet kører, og en router stod delvist af. Dette bevirkede at der kunne forekomme meget lange svartider fra client til server.

Problemet er så, at med disse lange svar tider, nåede systemet måske at oprette en ordre, men ikke at lægge ordrelinier ind, da det bliver udført i 2 forskellige SQL-sætninger.
Derved gik nogle varelinier tabt i processen.

Er der nogen der har nogen ideer til, hvordan dette kan undgåes, evt. med noget "forbindelses-check" inden der bliver skrevet i databasen, eller en måde, hvor systemet kan "fortryde" hvis den ikke bliver færdig med en funktion. eller noget helt andet.

Håber på nogle gode forslag
Avatar billede cpufan Juniormester
03. november 2006 - 21:15 #1
du skal lede efter noget

transaction
rollback
eller commit

på google  kombineret med din database f.eks. mysql

men der skal du holde tungen lige i munden
Avatar billede triggy Nybegynder
04. november 2006 - 11:22 #2
faldt over noget med BeginTrans, RollbackTrans og CommitTrans.
Men som jeg umiddelbart kan læse det, så skriver den først til databasen, når hele scriptet er gennemgået.
Vil det sige, at jeg ikke kan oprette en ordre f.eks. og så udlæse det netop oprettede ordre nummer, og smide ordrelinier ind på den, og stadig bevare muligheden for at annullere det hele, hvis forbindelsen ryger, eller der kommer en timeout eller noget ?
Avatar billede cpufan Juniormester
04. november 2006 - 12:02 #3
du kan gennemføre alle sql's, og hvis alt er gået godt "committer du det"
hvis noget gik galt laver den en rollback, dvs genopretter db til før du begyndte.

det hele foregår automatisk, når først det er rigtigt sat op.
Avatar billede triggy Nybegynder
04. november 2006 - 13:03 #4
ja, det virker jo som præcis det jeg skal bruge...  Så mangler jeg jo bare en mulighed for at sætte en tid på, så den kan nå at lave en rollback, inden den får timeout, hvis scriptet er for lang tid om at blive udført
Avatar billede cpufan Juniormester
04. november 2006 - 18:53 #5
ja men det er indstillinger du skal gennemføre på db'en, eller i startkommando,
jeg kan ikke huske det....

men når det er sat rigtigt op så er det totalt skudsikkert,
der er ikke andet for end at lede efter en tutorial, som passer til netop din database.
Avatar billede triggy Nybegynder
31. december 2006 - 00:00 #6
så er det vidst ved at være lukketid.
cpufan smider du ikke lige et svar, da dit forslag fungerer perfekt
Avatar billede cpufan Juniormester
31. december 2006 - 00:21 #7
kommer her
Avatar billede triggy Nybegynder
31. december 2006 - 00:25 #8
takker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester