Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Ciclo a scaglioni

  1. #1

    Ciclo a scaglioni

    Per l'invio delle email ad un numero elevato di iscritti uso questo ciclo:

    While Not oRs.EOF
    SendMail "admin@sito.it", oRs("uEmail"), soggetto, HTML, true
    n=n+1
    oRs.MoveNext
    Wend
    vorrei creare una pausa dopo l'invio di tot email,
    tipo dopo 200 email frmati per X tempo, poi riprendi per altre 200 e rifermati fino a che si esce dal ciclo.

    Cercando nel forum non ho trovato nulla a parte un sistema che scrive du DB ma non mi è chiaro, vorrei fare tutto lavorando solo sul ciclo.

    Qualcuno può suggermi un sistema per cominciare il lavoro?

    Tante grazie
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    L'attesa lato server non la puoi fare.
    Potresti fare un invio a blocchi, con submit automatico per l'invio al blocco successivo utilizzando un delay in js.

    Roby

  3. #3
    Capisco, ma come logica questi blocchi come si definiscono o quantificano?
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Fai una query che recupera un tot di email da inviare quante sono definite nel blocco.
    Ad ogni invio iposti l'email su "inviata" e quindi il blocco successivo recupererà solo quelle ancora da inviare...
    Che ne, su 1000 email farai blocchi di 100 e lui da sé ne invierà per 10 volte...

    Roby

  5. #5
    Quindi bisogna fare in modo che ad ogni utente ciclato setti a 1 un determinato campo, però ad ogni ciclo che recupera l'email deve sempre estrarre i tutti i record per controllare se l'ha gia settato.

    Se ci fosse gia uno script di esempio sarebbe più facile applicare questa strategia.
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    No, se usi mysql sarà una cosa del genere

    select email form temail where inviata = 0 limit 100

    fatto l'invio imposti il campo inviata ad 1

    Roby

  7. #7
    Si uso MySQL

    Ho fatto come dicevi tu, ma mi manca la seconda parte che non ho capito....

    Ora ho impostato LIMIT a 100 e aggiunto un campoi uNews

    Mail= oRs("uEmail")
    rSQL = "UPDATE users SET uNews=1 WHERE uEmail= '" & SQLEncrypt(Mail) & "'"
    DBExecute oCn, rSQL
    Ora il ciclo While manda un email alla volta fino al limite (100) impostato in QUERY

    ad ogni utente che manda l'Email setta a 1 il campo uNews per marcare che gli è stata inviata.

    Ara serve ancora un pò della tua pazienza per spiegarmi il sistema delay in java,
    linguaggio con cui non ho molta familiarità purtroppo, ma vedrò di riuscirci basandomi sulla tua risposta.
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Parlo di javascript... Cerca in rete qualcosa tipo "setTimeout", serve ad impostare un delay di un tot di secondi.

    Roby

  9. #9
    Si, avevo gia cercato e trovato qualcosa:
    http://www.chicercatrova2000.it/JavaScript/Timer.asp

    però ho bisogno di qualche esempio scritto per mischiare Java con Asp
    o comunque un pò di spiegazione sulla logica dello script da applicare.
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  10. #10
    Dammi un parere su quello che ho fatto seguendo il tuo discorso iniziale correggendo ciò che secondo te andrebbe aggiunto o modificato, ora è molto rudimentale il sistema
    privo di controlli e condizioni.
    Con il tuo aiuto cerco ora di migliorarlo.

    ' Ricarica la pagina quando quando si esce dal ciclo While

    Function avantiBlocco()
    Response.Write " <script language=""javascript"" type=""text/javascript"">" & vbCRLF
    Response.Write " function refresh()" & vbCRLF
    Response.Write " {" & vbCRLF
    Response.Write " self.location.href='" & sUrlPage & "'" & vbCRLF
    Response.Write " }" & vbCRLF
    Response.Write " window.setTimeout('refresh()',5000)" & vbCRLF
    Response.Write " </script>" & vbCRLF
    End Function

    ' Estrai le mail non ancora marcate
    rSQL = "SELECT uEmail from users WHERE uNews=0 LIMIT 10"


    While Not oRs.EOF

    rSQL = "UPDATE users SET uNews=1 WHERE uEmail= '" & SQLEncrypt(Mail) & "'"
    DBExecute oCn, rSQL

    INVIA= oRs(email)

    oRs.MoveNext
    Wend

    'esco dal ciclo e richiamo la funzione di refresh che ripartire la baracca dopo il tempo settato....
    ' Richiamo funzione
    avantiBlocco

    'Infine se non ci sono più record da selezionare per invio
    Response.Write "FINITO e resettati gli invii a 0"
    rSQL = "UPDATE users SET uNews=0 WHERE uValid=1"
    DBExecute oCn, rSQL
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.