Avatar billede jimpp Nybegynder
12. januar 2005 - 21:50 Der er 7 kommentarer og
1 løsning

Mail script, dræber server.

HAr dette mail script, der har en grim tendens til at ligge serveren ned. Ikke timeout, men død, fryser, kaput :) Det er den besked jeg ahr fået fra min host.

Spørgsmålet er så hvad jeg kan gøre for at optimere hastigheden.

Nogen der har et forslag?

---------------------KODEN-----------------------------

Set RS_Mail = Server.CreateObject("ADODB.RecordSet")
RS_Mail.open "Select * From [modtager] WHERE subs LIKE '%new%' order by id", Conn_mail,1,3

set msg = Server.CreateOBject( "JMail.Message" )
msg.ContentType = "text/html"
msg.Logging = true
msg.silent = true
msg.From = "nyhedsmail@gamepad.dk"
msg.FromName = "Gamepad Live-Update"
msg.AddRecipient  "nyhedsmail@gamepad.dk"

Do while not RS_Mail.eof
If Trim(RS_Mail("mail")) <> "" then
  msg.AddRecipientBCC RS_Mail("Mail")
End If
RS_mail.movenext
loop

msg.Subject = "Gamepad.dk Nyhed: " & request.form("titel")
msg.Body = "<span style='font-family: verdana; font-size: 11px;'>Nyhed <b>" & Request.Form("teaser") & vbCrLf & "<br><br>" & vbCrLf & "<a href='http://gamepad.dk/indhold/nyhed.asp?id=" & id & "'><b>Læs nyheden her</b></a><br><br><i>Afsendt fra 'Mail-Robot' på GamePad.dk.</i></span>"

---------------------KODE SLUT--------------------------
Avatar billede driis Nybegynder
12. januar 2005 - 22:16 #1
Hvor mange modtagere har du ?
Avatar billede jimpp Nybegynder
12. januar 2005 - 22:49 #2
15000, men det svinger alt efter hvilken slags brev der sendes. alt fra 100 til 8000
Avatar billede carl_erik Nybegynder
12. januar 2005 - 22:56 #3
GetRows....
Avatar billede jimpp Nybegynder
12. januar 2005 - 23:00 #4
Ja?

Okay, i det eksempel vi har der oppe, er der 7855 poster.
Avatar billede driis Nybegynder
12. januar 2005 - 23:08 #5
Prøv at læse den her:
http://www.juicystudio.com/tutorial/asp/getrows.asp

Og prøv i øvrigt at teste om det er dette loop:
Do while not RS_Mail.eof
If Trim(RS_Mail("mail")) <> "" then
  msg.AddRecipientBCC RS_Mail("Mail")
End If
RS_mail.movenext
loop


... eller selve Mail.Send der får serveren til at gå ned.
Umiddelbart tror jeg du kan få en udmærket performance forbedring vha. GetRows metoden.
Avatar billede driis Nybegynder
12. januar 2005 - 23:09 #6
"When it comes to increasing the efficiency of your script, you need to reduce both the number of objects instantiated, the duration of their scope, and the number of trips to each object. When working with a recordset that contains several rows of data, you can increase the efficiency of your script by using the Recordset object's GetRows method. By stuffing the recordset data into an array, you're able to release your database objects quicker reducing overheads on the server, plus its quicker to loop through an array than a Recordset. The disadvantage of using the GetRows method, is that you give up all of the features that the Recordset object has to offer."
Avatar billede carl_erik Nybegynder
12. januar 2005 - 23:30 #7
du legger alt getrows i array...
og skriver ut...
For n = lbound(DinArray) TO ubound(DinArray)

'DIN MAIL KODE

If Trim(DinArray(n)) <> "" then
  msg.AddRecipientBCC DinArray(n)
End If

'DIN MAIL KODE

next
Avatar billede jimpp Nybegynder
24. januar 2005 - 18:20 #8
har opgivet - lukker nu - tak for hjælpen ellers!
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