Avatar billede marvinq Nybegynder
21. oktober 2007 - 18:05 Der er 32 kommentarer og
1 løsning

Overflow problem!

Hej eksperter!

Jeg er helt på røven med noget asp-kode, som tilsyneladende melder en stack-overflow fejl.

Problemet opstår fordi jeg viser en lang række billeder, som styres ud fra et sql-kald. Det skal forståes sådan, at når en bruger er logget ind, så er der lavet et sql-kald, som henter brugeres id. Dette id bruges til at kalde en ordentlig flok billeder (ca. 80). Så i bund og grund er billederne parameter bestemt ud fra brugerens id-nummer...

...men - den melder stack-overflow. Jeg har prøvet at fjerne nogle af billederne, og har fundet ud af at den cirka kan klare 25 billeder... men jeg skal gerne vise alle cirka 80 billeder.

Kan det løses på nogen måde?? Vil være super taknemmelig, hvis der er nogen som kan trylle lidt for mig.

På forhånd tak.

/MHQ
Avatar billede w13 Novice
21. oktober 2007 - 18:14 #1
(Med på en lytter. =)
Avatar billede tafkab Nybegynder
21. oktober 2007 - 19:26 #2
Kunne du ikke lave thumbnails og så vise dem?
Eller dele op med paging, så du får flere sider.
Avatar billede marvinq Nybegynder
21. oktober 2007 - 19:32 #3
Ideen med thumbnails giver samme problem. Det har jo ikke noget med størrelsen at gøre. Det er desuden heller ikke ret store.

Kan ikke dele dem op på flere sider, men jeg kan selvfølgelig prøve at dele den op i flere sql-kald. Vil jeg lige prøve.

Andre gode idéer??

/MHQ
Avatar billede tafkab Nybegynder
21. oktober 2007 - 19:37 #4
Har du en nøjagtig fejlbeskrivelse, for det kan godt være bufferstørrelsen på internet serveren, der ikke kan klare det, og det kan man løse på flere måder enten ved at dele det op i flere sql kald eller at skrive det ud engang imellem med en Response.Flush (tror jeg den hedder)
Avatar billede marvinq Nybegynder
21. oktober 2007 - 19:39 #5
Den med flere sql-kald dur ikke, for der er egentlig kun brug for et, og det er ikke der flaskehalsen er. Jeg tror det er fordi den skal bruge parametrene i alle billederne, og stack er for lille til at "huske" det i compile-time.

Får følgende fejl...

"Sun ONE ASP VBScript compilation (0x800A03EA)
parser stack overflow"
Avatar billede tafkab Nybegynder
21. oktober 2007 - 20:13 #6
Hmm, den var værre, jeg kender ikke Suns ASP og kan ikke rigtig finde noget på Google - så kan du evt. pinpointe hvilken kode linie der giver problemet?
Avatar billede marvinq Nybegynder
21. oktober 2007 - 21:04 #7
Fejlen kommer lige nøjagtig efter indsættelse af billede nr. 22 og billedekaldet er fuldstændig ens, så det er ikke der fejlen ligger.

Er helt blank.

/MHQ
Avatar billede tafkab Nybegynder
21. oktober 2007 - 21:11 #8
Bruger du Response til at sætte dem ind med eller hur?
Avatar billede marvinq Nybegynder
21. oktober 2007 - 21:26 #9
nej, det er udelukkende et database kald.

Eller det vil sige..
  "SELECT * FROM user WHERE user.id = '" & xid & "'"

xid er en response.querystring...

fra sql'en trækker jeg bl.a. user.name, som er en del af stien til billedet.

/MHQ
Avatar billede tafkab Nybegynder
21. oktober 2007 - 21:32 #10
Det kan godt være vi taler lidt forbi hinanden, for det jeg var ude efter er den linie i din kode der giver fejlen, du siger den kommer ved billede nr 22 - men du må have noget kode som der måske kan optimeres eller rettes lidt til på?
Avatar billede marvinq Nybegynder
21. oktober 2007 - 21:40 #11
Ja, den giver en "parser stack overflow" i linie 112, og det er præcis der hvor billede nummer 22 bliver indsat...

Det ser således ud...

<% IF rs("id") = 133 THEN %>
    <img src="xxx" border="0" alt="" />
<% ELSE IF rs("id") = 133 THEN %>
    <img src="xxx" border="0" alt="" />
<% ELSE IF rs("id") = 133 THEN %>
    <img src="xxx" border="0" alt="" />

etc...

Jeg ved ikke om det vil gøre den store forskel at køre i case, men mener ikke det ændrer noget.

Men det kan være jeg kan blive klogere... er ikke nogen kæmpe asp guru :)

/MHQ
Avatar billede marvinq Nybegynder
21. oktober 2007 - 21:41 #12
... 133 er bare et eksempel id til sammenligning.
Avatar billede marvinq Nybegynder
21. oktober 2007 - 21:42 #13
...og xxx er stien til billedet, som tager "parametre" fra min rs med i stien.
Avatar billede tafkab Nybegynder
21. oktober 2007 - 22:18 #14
Kunne der være noget i stien til billede 22 som dit rs ikke kan lide? For ja koden er ret ligetil, må jeg ikke se den rigtige kode istedet?
Avatar billede marvinq Nybegynder
21. oktober 2007 - 22:33 #15
Fejlen er ikke i stien... har prøvet at bytte frem og tilbage mange gange, og har triple-tjekket alle links.

Jeg kan desværre ikke videre give den præcise source, da der ligger en hel klar aftale herom bag projektet.

Men det virker umiddelbart som om at den parser som "oversætter" asp'en har for lille en stack. Jeg har set at dette kan ændres hvis man eksempelvis skriver ind fra en form med nogle Script utilities, men det kan vel ikke benyttes i dette eksempel!??

Du snakkede om noget "flush" på et tidspunkt - hvad gør det`?

/MHQ
Avatar billede fennec Nybegynder
22. oktober 2007 - 08:24 #16
En flush sender informationerne til browseren.

Normalt beregner serveren alle oplysningerne og samler hele HTML i en buffer, og når den er færdig sendes informationerne til klienten. Med flush kan man fortælle at den skal sende inden den er færdig.

Prøv at kør disse to koder hver for sig:
response.write "Hej med "
for f=0 to 1000000
next
response.write "dig"

response.write "Hej med "
response.flush
for f=0 to 1000000
next
response.write "dig"

Man bruger gerne flush på sider som har en lang load tid, eller som fylder mere end de 4 Mb som serverens buffer er på.
Avatar billede marvinq Nybegynder
22. oktober 2007 - 14:24 #17
Det virker heller ikke med flush. Men der er vel heller ikke noget at "flushe", eftersom billederne er så vanvittigt små. De fylder ikke 2 Mb... Det må være fordi mængden af variabler den skal holde er for stor, er det ikke korrekt? - og det er jo ikke noget man kan flushe.

Slet ingen der har en idé til hvad der kan løse problemet??

/MHQ
Avatar billede w13 Novice
22. oktober 2007 - 14:30 #18
Ikke uden at se koden, er jeg bange for.
Avatar billede marvinq Nybegynder
22. oktober 2007 - 15:36 #19
aargh... prøver lige om jeg kan lave en "næsten" kopi.

/MHQ
Avatar billede marvinq Nybegynder
22. oktober 2007 - 19:30 #20
Så skulle der være en kopi til rådighed. Den er modificeret og godkendt af "rettighedshaveren", men den giver samme fejl som originalen.

http://web.sonofon.dk/milton/kopi.asp

/MHQ
Avatar billede w13 Novice
22. oktober 2007 - 19:33 #21
Ehm, den der kvarte million "end if"'er.. Hvad gør de godt for?
Avatar billede w13 Novice
22. oktober 2007 - 19:34 #22
Ser umiddelbart ud, som om du prøver at lukke dine:

    <% IF recCo("pp") = 133 THEN %>
        <img src="xURLx" width="1" height="1" border="0" alt="" />
    <% ELSE IF recCo("pp") = 132 THEN %>
        <img src="xURLx" width="1" height="1" border="0" alt="" /
Osv.

Men de behøver da kun en "End If". Eller er det mig, der er helt galt på den?
Avatar billede tafkab Nybegynder
22. oktober 2007 - 19:54 #23
Du starter med

<% IF recCo("pp") = 133 THEN %>

længere nede har du en

<% ELSE IF recCo("pp") = 133 THEN %>

sådan godt nestet ind i hinanden, så den vil du aldrig komme i og det ser for mig ud som en god gang gentagelser som du ikek lander i eller læser jeg det helt forkert?
Avatar billede marvinq Nybegynder
22. oktober 2007 - 20:05 #24
Ja okay... så bogstaveligt skulle du ikke tage den... det er forskellige værdier. Har bare kopieret hver blok igen og igen... det er 62 forskellige tal.

Så der er ikke noget nested i det.

Ved godt det ikke er pænt med alle de if'er - det kunne også være case eller noget andet fint, men det gør vel ikke nogen forskel.
Avatar billede tafkab Nybegynder
22. oktober 2007 - 20:07 #25
Og det er jo bare fordi du gentager dig selv i dette tænkte eksempel - DOH mig selv :-)

Jeg kan ikke se noget galt i koden, så jeg hælder til det er noget med den asp fra Sun, men om man kan indstille noget på den ved jeg desværre ikke.
Avatar billede tafkab Nybegynder
22. oktober 2007 - 20:08 #26
Læsevenligheden bliver bedre med Case men jeg tror ikke det gør en forskel, men måske var det et forsøg værd?
Avatar billede tafkab Nybegynder
22. oktober 2007 - 20:09 #27
Hmm og dog, det kan være du simpelthen har for mange nestede if'er til at den kan blive ved med at fortilke det og så vil en select case gøre en forskel
Avatar billede marvinq Nybegynder
22. oktober 2007 - 20:12 #28
Er også helt væk på den.. aner ikke hvad jeg skal gøre. Har aldrig oplevet den fejl før - for ja, mener også at koden skulle være fejlfri. Og den virker jo også fint med under 20 billeder.

Kan du/I afvilke dem??? (På en ikke Sun asp??).

Må lige prøve med cases, men ellers er I lige så blanke som mig???  :-/


/MHQ
Avatar billede tafkab Nybegynder
22. oktober 2007 - 20:26 #29
Jeg har ikke adgang til en database jeg kan prøve med, desværre.
Avatar billede marvinq Nybegynder
22. oktober 2007 - 23:19 #30
Nogen gange hjælper det lige at diskuttere tingene igennem med andre :)

Troede ikke case modellen lavede nogen forskel på compiler niveau... men åbenbart... Det virker ihvertfald som planlagt nu :)

Smid et svar og få lidt kredit for din sparring :)

/MHQ
Avatar billede tafkab Nybegynder
23. oktober 2007 - 19:01 #31
Det er lige det med at få sig sporet ind på tingene :-)
Avatar billede marvinq Nybegynder
23. oktober 2007 - 19:50 #32
det er nemlig rigtigt :)
Avatar billede tafkab Nybegynder
23. oktober 2007 - 20:16 #33
Takker for point :-)
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