Avatar billede dna Nybegynder
19. august 2001 - 23:25 Der er 19 kommentarer og
4 løsninger

Svær asp !! (tror jeg!) *g*

Hejsa alle...

Jeg har et lille problem med et asp-script.. Scriptet gør det, at den kigger i min mySQL database om der findes en record for i dag - og hvis der ikke gør (altså rs.eof) så opretter den dagens post! men, men, men... Jeg bruger Mircosoft´s stress-tool, hvor jeg indstiller den til at flere brugere samtidigt kører scriptet (Hvilket jo godt kan ske i daglig brug på en hjemmeside) - så kan den finde på at oprette imellem 1 og 10 poster!!!

Kan man gøre noget ved dette ???

dna
Avatar billede mesterlars Nybegynder
19. august 2001 - 23:30 #1
Det burde den jo ikke gøre?

Det er vel kun første gang du hitter siden den skal oprettes, så det burde da være ligegyldigt om du kører stess tool på.

Hvis mySQL understøtter det kan du jo prøve at lave dit \'check om der er nogle poster - hvis Nej, så opret én\' til en transaktion
Avatar billede stigc Nybegynder
19. august 2001 - 23:31 #2
Avatar billede dna Nybegynder
19. august 2001 - 23:34 #3
mesterlars.. det er jo når flere brugere kører scriptet på samme tid.. så tjekker de jo alle i db´en på samme tid, og finder derfor ikke nogen post, og så opretter de alle sammen en post!

dna


Avatar billede mesterlars Nybegynder
19. august 2001 - 23:36 #4
dna < Ja..det er derfor jeg (og stigc) siger, at du skal benytte dig af transaktions-styring.
Avatar billede mesterlars Nybegynder
19. august 2001 - 23:39 #5
Jeg ved intet om mySQL, men du bør ku checke om den supporter transaktioner sådan her:
---------------------------
intSupported = conn.properties(\"transaction DDL\")

If intSupported = 8 Then
response.write \"transaktioner er understøttet af mySQL\"
End If
--------------

hvor conn er din connection
Avatar billede dna Nybegynder
19. august 2001 - 23:43 #6
Man kan ikke bruge transaktioner i mySQL! :-(
Avatar billede mesterlars Nybegynder
19. august 2001 - 23:44 #7
hmm. dobbelttjek hellere et eller andet sted....dokumentationen eller sådan noget..
Avatar billede dna Nybegynder
19. august 2001 - 23:52 #8
http://www.eksperten.dk/spm/14960 << her siger de også, at det ikke er undetstøttet.. så skal vi ikke sige det?

dna
Avatar billede mesterlars Nybegynder
19. august 2001 - 23:53 #9
lad os det :)
Avatar billede mesterlars Nybegynder
19. august 2001 - 23:54 #10
(synes nu ikke det står i det link der, man lad nu det ligge)
Avatar billede stigc Nybegynder
19. august 2001 - 23:56 #11
det skriver de på www.mysql.com er den ikke gør!
læs mere her, der er et alternativ: http://www.mysql.com/documentation/mysql/bychapter/manual_Introduction.html#Commit-rollback
Avatar billede ldanielsen Nybegynder
20. august 2001 - 09:06 #12
Mener du ikke at den er tom hvis rs.BOF?
Avatar billede zeptic Nybegynder
20. august 2001 - 09:13 #13
Kan man ikke blot gøre det i Application-objektet?

Jeg tænker specielt på at gøre det i global.asa:

Sub Application_OnStart
  \'det er kun den første besøgende der eksekverer dette
  LastUpdate=<find den sidste opdateringsdato i databasen>
End Sub

Sub Session_OnStart
  Application.Lock
    If Application(\"LastUpdate\")+ <1 dag> <= now() Then
      \'vi er mindst en dag efter sidste opdatering
      <opdater database>
      Application(\"LastUpdate\")=<dato for opdatering>
    End If
  Application.UnLock
End Sub

\'jeg antager at datoen i LastUpdate _ikke_ indeholder tt:mm:ss, hvis den gør skal de sættes til 00:00:00
Avatar billede dna Nybegynder
20. august 2001 - 15:47 #14
zeptic: Jamen, det er en slags tæller system, så det er et script der skal overvåge måske 1000 forskelllige sider, som hver især har deres egen \"opdatering\" hver dag (Hvis de altså får nogle besøgende!)

dna

Idanielsen: Jeg mener, som jeg skriver:
<snip>
og hvis der ikke gør (altså rs.eof) så opretter den dagens post!
</snip>
Avatar billede ldanielsen Nybegynder
20. august 2001 - 19:00 #15
Altså, hvis rs.BOF = True, så er recordsettet tomt. Jeg har altid lært at det er den sikreste måde at checkke om recordsettet er tomt.

Men jeg ved da ærlig talt ikke hvorfor, hvis man altså kan regne med at EOF altid svarer det samme.

Tro mig, jeg husker ikke forkert, denne lille kodestump kan jeg i søvne:

if not Rec.BOF then
  do While not Rec.EOF
    blabla
    Rec.MoveNext
  loop
end if

En anden måde er at bruge \"SELECT Count(*) ..... \"
Avatar billede zeptic Nybegynder
21. august 2001 - 09:04 #16
Hvad så hvis du låser db fuldstændigt inden du kigger i den?
Avatar billede dna Nybegynder
21. august 2001 - 13:16 #17
Tja, giver det ikke problemer, da scriptet gerne skulle kunne køres af flere på en gang.. jeg tæntke måske mere på et \"rydde-op\" script ?

select ... where dato = indtastet_dato AND ref = i
hvis flere records - slet alle pånær 1
i = i + 1
loop

noget???

dna
Avatar billede dna Nybegynder
22. august 2001 - 22:53 #18
fik ikke rigtigt en løsning.. men, fordeler point til dem som var prøvede...

dna
Avatar billede cyigen Nybegynder
22. august 2001 - 22:58 #19
Du skal bare bruge disse løkker i den kode uden på disse koder::

SQL = \"........\"

til

set rs = nothing


Du skriver bare

Application.Lock
\'Din kode og DEt der If rs.EOF
Application.UnLock



dette gør at handlingen ikke kan udføres på samme tid på alle maskinerne og at det kun er den ene der gør handlingen først....
Når så den første har lavet recorden i databasen, har de andre samtidige brugere ingen mulighed for at oprette en ny post, da den er oprettet til den tid
Avatar billede cyigen Nybegynder
22. august 2001 - 23:00 #20
hvis du ikke forstod så er der lidt kode hjælp her:

Application.Lock
  SQL = \"SELECT * FROM tabel WHERE kolon = \'adsads\'\"
  set rs = conn.Execute(SQL)

  If rs.EOF then
  \'Opret ny post
  end If

  set rs = nothing
Application.UnLock
Avatar billede dna Nybegynder
22. august 2001 - 23:53 #21
cyigen.. jeg er ikke meget for at låse mine tabeller hver gang jeg skal bruge dem.. ?! Hvad så hvis der virkelig er mange der skal bruge dem... giver det ikke noget begrænsning ?

dna
Avatar billede cyigen Nybegynder
24. august 2001 - 16:20 #22
nej, det er den eneste mulighed
Avatar billede cyigen Nybegynder
24. august 2001 - 16:21 #23
og du skal jo også tænke på at alle chat systemer som er lavet over ASP bruger samme system...

der får du jo heller ikke besvær med at snakke med de andre... Det sker så hurtigt at du fatter intet!
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