/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Script timeout
Fra : Thomas Møller Nexø


Dato : 17-06-03 23:41

Nu har jeg så set det med.
Jeg har lavet et administrationsmodul, der kan oprette nyheder i
en access database og samtidig sende en email med nyheden til
alle brugere i en database og dette har virket upåklageligt
gennem snart rigtig lang tid.
Der kommer naturligvis flere brugere i databasen løbende hvilket
da også forøger tiden det tager fra emailen bliver sendt til at
siden redirecter til nyhedsoversigten, men indtil i dag har der
som sagt ikke været problemer med systemet.

Nu får jeg så følgende fejlmeddelelse efter at siden har stået i
noget nær en uendelighed og forsøgt at sende den givne nyhed til
brugerne:

_____________________________________
Active Server Pages error 'ASP 0113'

Script timed out

/admin/nyheder.asp

The maximum amount of time for a script to execute was exceeded.
You can change this limit by specifying a new value for the
property Server.ScriptTimeout or by changing the value in the IIS
administration tools.
_____________________________________

Måden det hele er sat op på er at man starter med en form, der så
sender data til en anden side og herfra kan man så validerer
nyheden med request.querystring("formfelt") før der endeligt
postes til databasen (dette virker stadig).

Min kode på siden der valideres og postes og sendes mail til
brugerne er som følger:

FUNCTION fixQuotes( theString )
   fixQuotes = Replace( theString, "'", "''" )
END FUNCTION
   
   Header = Request.Querystring( "Header" )
   Billede = Request.Querystring( "Billede" )
   Nyhed = Request.Querystring( "Nyhed" )
   Forfatter = Request.Querystring( "Forfatter" )
   NyhedBrake = Replace( Nyhed, vbcrlf, "<BR>" & vbcrlf )

   IF Request.Servervariables("Content_Length") > 0 THEN
   
      Set Rs = Server.CreateObject("ADODB.Recordset")
         Rs.Open "nyheder", Conn, 2, 2
         
         Rs.AddNew
         
         Rs("Dato") = Now
         Rs("Nyhed") = Nyhedbrake
         Rs("Header") = Header
         Rs("Forfatter") = Forfatter
         Rs("Billede") = Billede
         
         Rs.Update
   
' JMail begynder
If Request.Querystring("Send") <> "Nej" Then ' Validerer om
nyheden skal sendes til brugere

   Set Rs = Server.CreateObject("ADODB.Recordset")
   Rs.Open "Select Top 1 * From nyheder Order By Id Desc", Conn
   
      strLink = "<a
href='http://www.havensupport.dk/nyheder.asp?mode=visnyhed&id=" &
Rs("Id") & "'>" & "...L&aelig;s hele nyheden" & "</a>"
   
   Set Rs = Server.CreateObject("ADODB.Recordset")
      Rs.Open "Select * From nyhedsbrev", Conn
   
Do While Not Rs.EOF

   Navn = Rs("Navn")
   Email = Rs("Email")
   BilledString =
"http://www.havensupport.dk/grafik/nyheds-billeder/"
   Tekst = Left((Nyhedbrake),600)

Set JMail = Server.CreateObject("JMail.SMTPMail")

Noget Jmail kode (som jeg vil spare jer for)

   JMail.AddRecipient Rs("Email")
   
   JMail.Priority = 3
   JMail.Execute
   set JMail = nothing
   
Rs.MoveNext
Loop

End If
' JMail slutter

   Response.Redirect("nyheder.asp")
   
End If

Der er sikkert en mere optimal måde at gøre dette på, men det har
som sagt virket fint indtil nu.

Nogen der kan se en evt. fejl i koden, der pludselig er begyndt
at gøre knuder?

Kan det have noget med permissions på serveren at gøre?
Dem har jeg desværre følt mig nødsaget til at rode lidt for meget
rundt med på det sidste.

Håber på lidt hjælp fra en skarp hjerne eller to

Med venlig hilsen

Thomas Møller Nexø
--------------------------------
thomas@havensupport.dk
http://www.havensupport.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jørn Andersen (18-06-2003)
Kommentar
Fra : Jørn Andersen


Dato : 18-06-03 00:19

On Tue, 17 Jun 2003 22:40:51 +0000 (UTC), Thomas Møller Nexø
<thomas@havensupport.dk> wrote:

>Script timed out
>
>/admin/nyheder.asp
>
>The maximum amount of time for a script to execute was exceeded.
>You can change this limit by specifying a new value for the
>property Server.ScriptTimeout or by changing the value in the IIS
>administration tools.
<snip>
>
>Min kode på siden der valideres og postes og sendes mail til
>brugerne er som følger:
<snip>

>Nogen der kan se en evt. fejl i koden, der pludselig er begyndt
>at gøre knuder?

Ikke umiddelbart, men jeg kender heller ikke JMail specielt godt.

Jeg ville først (som test) lave et længere ScriptTimeout for at se, om
det i det hele taget kører, men blot tager lidt længere tid.

Hvis det er tilfældet, er der ikke noget specielt "forkert" i blot at
"løse" problemet på denne måde: Dit script tager bare lidt længere
tid, fordi der skal sendes flere mails, og derfor sætter du Timeout'en
op.

Men ellers kunne du overveje, om det ikke er lidt voldsomt
ressourcekrævende at køre enkelt-mails ud på denne måde. I stedet
kunne du sende den samme mail ud til fx 20 personer ad gangen (brug så
Bcc i stedet), så skal den ikke gennemløbe så mange gange.

Just my 2 cents ...

--
Jørn Andersen,
Brønshøj

Thomas Møller Nexø (18-06-2003)
Kommentar
Fra : Thomas Møller Nexø


Dato : 18-06-03 11:55

> >Nogen der kan se en evt. fejl i koden, der pludselig er begyndt
> >at gøre knuder?
>
> Ikke umiddelbart, men jeg kender heller ikke JMail specielt godt.
>
> Jeg ville først (som test) lave et længere ScriptTimeout for at se, om
> det i det hele taget kører, men blot tager lidt længere tid.

Hej Jørn. Jeg har ledt lidt rundt omkring, men kunne ikke lige finde
noget omkring dette. Hvordan sættes timeout op. Er det på selve serveren
eller er der en kode til det?

>
> Men ellers kunne du overveje, om det ikke er lidt voldsomt
> ressourcekrævende at køre enkelt-mails ud på denne måde. I stedet
> kunne du sende den samme mail ud til fx 20 personer ad gangen (brug så
> Bcc i stedet), så skal den ikke gennemløbe så mange gange.

Enig!
Fulgte dog en tidligere tråd hvor en person havde problemer med at
scriptet ikke sendte til alle emailadresser, men sprang hver 20'ende
adresse over.
Men umiddelbart lyder det som en ide da det efterhpnden med omkring 100
adresser i databasen er begyndt at køre ret langsomt.

Har du forresten et clue på hvordan et sådant script kunne laves?

Med venlig hilsen
Thomas

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Torben Brandt (18-06-2003)
Kommentar
Fra : Torben Brandt


Dato : 18-06-03 15:15

Thomas Møller Nexø wrote:
>>Jeg ville først (som test) lave et længere ScriptTimeout for at se, om
>>det i det hele taget kører, men blot tager lidt længere tid.
>
> Hej Jørn. Jeg har ledt lidt rundt omkring, men kunne ikke lige finde
> noget omkring dette. Hvordan sættes timeout op. Er det på selve serveren
> eller er der en kode til det?

Du sætter ScriptTimeout således:
Server.ScriptTimeout = 60 ' antal sekunder

>>Men ellers kunne du overveje, om det ikke er lidt voldsomt
>>ressourcekrævende at køre enkelt-mails ud på denne måde. I stedet
>>kunne du sende den samme mail ud til fx 20 personer ad gangen (brug så
>>Bcc i stedet), så skal den ikke gennemløbe så mange gange.
>
> Enig!
> Fulgte dog en tidligere tråd hvor en person havde problemer med at
> scriptet ikke sendte til alle emailadresser, men sprang hver 20'ende
> adresse over.
> Men umiddelbart lyder det som en ide da det efterhpnden med omkring 100
> adresser i databasen er begyndt at køre ret langsomt.

Det er noget med at Windows (i nogle tilfælde) har en pickup-mappe, hvis
man kan "lægge" mails. Det går ret hurtigt at lægge den der, og så
bliver de bagefter sendt automatisk.
JMails funktion til det hedder 'nq' (udtales enqueue). Hvis du har
adgang til det (hvilket man ikke altid har på webhoteller) så søg bare
på JMail og nq på google eller så her:
<URL:http://www.eksperten.dk/spm/167945>

/Torben


Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408851
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste