Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [jquery] loop ajax

  1. #1
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626

    [jquery] loop ajax

    Ciao a tutti,
    Qual'è il modo migliore per chiamare ciclicamente una richiesta ajax. Dovrei inviare molte mail e per questo vorrei "spezzare" l'invio in blocchi. Per adesso faccio così:

    codice:
    function sendRequest(id, table, page){
          $.ajax({
               type: "GET",
               url:  "do.php?action=sendblock&table=" + table + "&id=" + id + "&page=" + page,
               dataType:"json"}).done(function(response){
                    if(response.status == "ok"){
                       _data.mailSend += response.send;
                       $.each(response.mailError, function(index, mail){
                         _data.error.push(mail);
                       });
                       showProgress();
                       if(response.continue == 1){
                          sendRequest(id, table, response.nextpage);
                       }
                    }else{
                       $("#info").html(response.error);
                    }         
           });
       }
    E' corretto? ho ci potrebbero essere dei problemi

    Grazie

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    apparentemente è corretto ma se pensi che blocchi lo spam non è questa la soluzione
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Grazie della risposta...temevo che il fatto che sia ricorsiva possa portare al blocco del browser se le chiamate salgono di numero (>100).

    Per lo spam cosa intendi? che il server mail blocchi a causa delle troppe richieste(mail() di php) ? Avevo pensato di aggiungere (lato php) una sleep(10) ad ogni richiesta. Pensi possa andare?

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    se metti lo sleep non ha senso fare n chiamate. ne fai una e gestisci tutto lato server non credi?

    il problema dello spam lo avrai se usi la sola funzione mail. Non a caso hanno creato soluzioni come swift e phpmailer senza dimenticare che esistono server dedicati per l'invio massivo di mail
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Quote Originariamente inviata da ciro78 Visualizza il messaggio
    se metti lo sleep non ha senso fare n chiamate. ne fai una e gestisci tutto lato server non credi?
    Questo lo faccio già. Ho uno script che viene lanciato da cron la notte. Si prende tutte le mail ed invia il messaggio.
    Visto che però ogni tanto mi chiedono se è possibile far partire le mail "a mano", ho implementato quest versione ajax.

    L'idea è di inviare il messaggio a 10 destinatari alla volta facendo una pausa di 10 secondi tra un "blocco" e l'altro in modo da non "bombardare" il mail server.
    Ma scusa una cosa, mail, phpmailer o swift non sono semplici wrapper per la sendmail del sever? cosa cambia se faccio (dal punto di vista dello spam):

    Codice PHP:
    foreach($users as $mail)
        
    mail($mail$message, ...); 
    oppure

    Codice PHP:
    foreach($users as $mail){
        ....
        
    $iPhpmailer->send();


  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    cambia molto. con le classi da me indicate hai un controllo completo della mail che mandi. dall'autenticazione alla gestione degli header in modo agevole. Detto questo, apro e chiudo parentesi se no andiamo oltre al javascript, il problema dello spam dipende anche dalla reputazione del server. Se il server è di tipo fatto in casa ci sono forti rischi per lo spam.

    Per js non ha senso fare n chiamate. Se usi lo sleep tramite il server puoi mandare anche 1000 mail insieme. Poi le gestisci li. Ed eviti che il server apache sia bombardato
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Che son meglio di mail() non ci piove
    Dicevo che non mi pare cambi molto dal punto di vista del "bombardare" il servizio sendmail
    L'idea di ajax è dovuta anche dal fatto che una singola mail() sul host server impiega circa 1 secondo (se non di più). 1000 email sarebbero circa 15 minuti, ed il browser andrebbe in timeout. Anche per questo avevo fatto lo script per cron.

    Cmq, grazie delle risposte. Farò altre verifiche per quanto rigiarda eventuli problemi dovuti allo spam. Nel caso suggerirò l'utilizzo di un servizio di mail massivo esterno


  8. #8
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Quote Originariamente inviata da boots Visualizza il messaggio
    Che son meglio di mail() non ci piove
    Dicevo che non mi pare cambi molto dal punto di vista del "bombardare" il servizio sendmail
    L'idea di ajax è dovuta anche dal fatto che una singola mail() sul host server impiega circa 1 secondo (se non di più). 1000 email sarebbero circa 15 minuti, ed il browser andrebbe in timeout. Anche per questo avevo fatto lo script per cron.

    Cmq, grazie delle risposte. Farò altre verifiche per quanto rigiarda eventuli problemi dovuti allo spam. Nel caso suggerirò l'utilizzo di un servizio di mail massivo esterno

    ma se fai la chiamata asincrona il browser non si blocca. una volta inviati i dati il server procede ad elaborarli e tu puoi provvedere ad una risposta. poi generi un logo per vedere l'esito. Infine il problema non è sendmail o libreria mail...ma che bombardi.

    guarda qui per una risposta e per far proseguire lo script

    http://stackoverflow.com/questions/1...-http-response
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


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.