Pagina 2 di 11 primaprima 1 2 3 4 ... ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 107
  1. #11
    Originariamente inviato da ricman
    Questa soluzione sarebbe la più professionale... Mi piace un casino...
    In termini pratici e di codice potresti darmi uno spunto? Soprattuto per il "estrai tot email per volta" e "usare il crontab" (quest'ultimo so come funziona e lo configuro per gestire un paio di backup e l'awstats... ma non l'ho mai "legato" all'uso del php)
    Guarda, io metterei un campo in più nella tabella dove hai le mail, tipo un enum che puoi mettere come meglio credi '','checked', piuttosto che 'si','no' ecc, ecc. Qui tieni conto delle mail che hai inviato e quali no.
    Per la query basta mettere un LIMIT 0,50 ovviamente con la clausola WHERE che estragga solo quelle con il tuo campo "inviata" diverso da 'si' o da quel che decidi di mettere.

    Il ciclo è un normalissimo ciclo, per il crontab se lo usi, non c'è molto da dire, lo fai puntare alla tua pagina php che fa quanto sopra per es. www.sito.it/pianificazioni/invio_newsletter.php gli dici di passare ogni ora e nulla più.

    Vado a mangiare un boccone

  2. #12
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Sei puoi gestire le cron tab allora si e' la sol migliore.

    Ma se nn puoi?
    Dipende.

  3. #13
    Siccome sono agli inizi qualcuno mi potrebbe passare un esempio di codice???
    Ho una tabella con 4 campi:
    id (primary key)
    email (indirizzo mail)
    code ( codice unico per ogni utente dipendente dal tempo, utile per identificare la cancellazione=
    is active (cella che mi dovrebbe permettere di selezionare a quali utenti inviare la mail)

    Ho installato anche la classe PHP HTML minemail. Ora il mio problema e scegliere tutti come destinatari. Vorrei inviare una mail per ogni utente. 50 mail ogni 60 min
    Qualcuno mi passa un esempio di codice grazie
    LMWEB.it - Il portale tecnologico
    http://www.lmweb.it - http://www.lmweb.it/blog

  4. #14
    valida la soluzione del cron job, ma se rilasci una notizia, riceverla per ultimo, edopo 10 ore dall'invio, solo perchè mi sono l'ultimo pirla iscritto...

    Secondo me puoi tranquillamente aumentare a 500 gli invii.. Devi pensare che non è come usare outlook, l'invio avviene da un server ad un altro, dove sono collegati in fibra a centinaia di MB di velocità.. Quindi l'invio di 1000 email occuperebbe il server per forse 30 secondi?

    Io fossi in te, proverei a mandare a tutti i tuoi iscritti una news letter, la fai con una pagina tua, dove ti calcoli quanto ci mette la pagina a leggere dal db i dati delle email e dei contenuti, a ciclarle creando un messaggio personalizzato per ogni utente e inviarle con una chiamata singola a mail, per ogni invio...

    Secondo me stai abbondantemente sotto i 30 secondi...

    Forse si sottovaluta la potenza dei webserver.. non stiamo parlando di 468..
    ...::: DESIDERARE E' UMANO :::...
    ...::: POSSEDERE E' DIVINO :::...
    ...::: HAVE A NICE DAY :::...
    (¯`·.¸¸.->ĐĮ ĦΞŁŁ<-.¸¸.·`¯)
    http://www.djhellclub.com

  5. #15
    Originariamente inviato da djhell
    valida la soluzione del cron job, ma se rilasci una notizia, riceverla per ultimo, edopo 10 ore dall'invio, solo perchè mi sono l'ultimo pirla iscritto...

    Secondo me puoi tranquillamente aumentare a 500 gli invii.. Devi pensare che non è come usare outlook, l'invio avviene da un server ad un altro, dove sono collegati in fibra a centinaia di MB di velocità.. Quindi l'invio di 1000 email occuperebbe il server per forse 30 secondi?

    Io fossi in te, proverei a mandare a tutti i tuoi iscritti una news letter, la fai con una pagina tua, dove ti calcoli quanto ci mette la pagina a leggere dal db i dati delle email e dei contenuti, a ciclarle creando un messaggio personalizzato per ogni utente e inviarle con una chiamata singola a mail, per ogni invio...

    Secondo me stai abbondantemente sotto i 30 secondi...

    Forse si sottovaluta la potenza dei webserver.. non stiamo parlando di 468..
    Potrei anche concordare, ma devi tenere anche conto di:
    Eseguire 1000 cicli sulla tua pagina php che compila, invia ed esegue un update sulla tal tabella, potrebbe andare in timeout lo script.
    Il webserver spesso è condiviso, non sempre ok(dipende dal contratto), quindi se altri utenti facessero la stessa cosa, il server di posta incomincerebbe a gestire 2000, 4000, 8000, ecc,ecc, mail alla volta e la cosa incomincia a cambiare.
    Di solito è lo stesso gestore che ti consiglia un limite di invii simultanei, se non lo fa lo si chiede.

    Comunque puoi sempre fare 6 crontab uno ogni 10 minuti, in un ora invii comunque 300 mail, se calibri la partenza ad un orario ragionato, per es. alle 00:00, per le 08:00 del mattino hai inviato 2400 mail.

  6. #16
    Originariamente inviato da serialkiller
    Guarda, io metterei un campo in più nella tabella dove hai le mail, tipo un enum che puoi mettere come meglio credi '','checked', piuttosto che 'si','no' ecc, ecc. Qui tieni conto delle mail che hai inviato e quali no.
    Per la query basta mettere un LIMIT 0,50 ovviamente con la clausola WHERE che estragga solo quelle con il tuo campo "inviata" diverso da 'si' o da quel che decidi di mettere.
    più.
    Sto ultimando questo script... ma mi sono un attimo perso...

    Ho impostato il Db in questo modo:
    utenti (tabella con l'anagrafica, categorie di appartenenza, etc...)
    email (id, oggetto, messaggio)
    invii (id, data, id_email)
    speditaa (id, id_invii, id_utente)

    Grazie alle ultime due tabelle dovrei dopo poter fare dei report del tipo Quando_ho_madato_Cosa e A_Chi_ho_mandato_Cosa.

    Ad ora sono a questo punto: quando clicco sul pulsante *Invia email*
    - guardo la data di oggi e quale email sto per inviare e le scrivo nel Db (tb invii)
    - ricavo l'ultimo ID inserito nella tabella invii (chiamiamolo $ultimo_id_invii)
    - apro un ciclo WHILE per inviare le email ai singoli utenti
    - sono dentro While: inserisco nella tabella sepditaa l'id dell'utente e $ultimo_id_invii
    - sono dentro While: eseguo la funzione mail()
    - chiudo il While
    - Email inviate con successo... saluti...


    Vorre i gestire gli invii nel modo in cui mi state suggerendo.

    Mi pare di capire che aggiungeresti un campo (potrebbe chiamarsi "inviata") nella tb speditaa... giusto?
    Dovrà essere gestito nel ciclo WHILE in modo da "fare qualcosa" riga in riga della tabella...

    Mi dai lo spunto?
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  7. #17
    La mia query sulla tb speditaa è all'incirca così:

    $query_speditaa = "
    INSERT INTO $tb_speditaa
    (id_invii, id_utenti)
    VALUES
    ('$ultimo_id_invii', '$row_user[id]')
    ";

    Potrei aggiungere qui il "si" nel campo che si "inviata" che dicevo... e che di default sul db prenderebbe il valore "no"


    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  8. #18
    Originariamente inviato da ricman
    La mia query sulla tb speditaa è all'incirca così:

    $query_speditaa = "
    INSERT INTO $tb_speditaa
    (id_invii, id_utenti)
    VALUES
    ('$ultimo_id_invii', '$row_user[id]')
    ";

    Potrei aggiungere qui il "si" nel campo che si "inviata" che dicevo... e che di default sul db prenderebbe il valore "no"


    Non sono sicuro di aver ben capito, premesso che ogni lavoro ed esigenze possono essere diversi, non capisco l'utilità della tabella invii, magari non lo capisco perchè non conosco le tue esigenze.

    Devi creare uno storico degli invii di "TUTTE" le mail che mandi? O è solo un controllo generico?

    Spiegati meglio perchè magari è più semplice di quel che sembra e magari tutte ste tabelle non servono.

  9. #19
    Originariamente inviato da serialkiller
    Spiegati meglio perchè magari è più semplice di quel che sembra e magari tutte ste tabelle non servono.
    Ah si, scusa... credevo che a parlarne troppo finissi OT..

    In pratica quelle due tabelle (invii e speditaa) mi servono per tenere un "archivio storico"... In pratica chi gestirà l'invio quando vorrà dovrà poter vedere in che data ha inviato un'email ben precisa e poi anche a chi è stata inviata quell'email.
    Con queste due tabelle (potrebbero essere anche una, forse...? ma non mi interessa, a meno di controindicazioni grosse la vedo bene anche così...) si potrà avere una pagina, diciamo, Report.php in cui posso fare le interrogazioni per ricordare a chi, o a che categoria, sono state inviate delle email, quando etc..

    Mi sarò spiegato?

    Cmq per tornare un attimo al campo "inviato" da aggiungere nel ciclo WHILE, tabella più.. tabella meno.. il discorso cambia o ... qual'è?
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  10. #20
    Secondo me, la tabella che contiene i messaggi (newsletter) dovrebbe avere anche un campo "categoria" (se la categoria è univoca per ogni utente) e un campo "terminata".
    Nel modulo che utilizzi per compilare la newsletter deciderai la categoria da un menu a tendina e salvi la newsletter con la sua categoria di appartenenza.
    Il campo "inviata" io lo metterei nella tabella dell'anagrafica, quella da dove estrai le mail da inviare.
    Con questi due campi alla prima query (es. SELECT * FROM newsletter WHERE finita='no' LIMIT 0,1), estrai la newsletter da inviare e tutti i campi che ti servono, compresa la categoria, solo se il campo "finita" è diverso da 'si'. Con il valore di "categoria" puoi eseguire la seconda query (es. SELECT * FROM anagrafica WHERE inviata = 'no' AND categoria='...CATEGORIA DELLA NEWSLETTER...' LIMIT 0,50), per estrarre le mail da ciclare, ma solo quelle che non sono gia state inviate (quindi con campo "inviata" = 'no') e solo quelle con categoria uguale alla newsletter.
    Ora non ti resta che ciclare le mail componedo il messaggio con tanto di intestazione personalizzata:"Buon giorno Sig. Pico Pallo, bla bla bla.", componi il messaggio e lo invii, se va a buon fine esegui una query (es. UPDATE anagrafica SET inviata='si' WHERE id='...ID DELLA MAIL...'), di update sulla tabella anagrafica dove setti il campo "inviata" su 'si', dove l'id è uguale all'id della mail che hai appena inviato, in questo modo se succede qualsiasi cosa è quasi impossibile saltare delle mail, al massimo (con una probabilità molto bassa), invii 2 volte la stessa newsletter al medesimo destinatario, ma a me non è mai successo, poi riprende il secondo cilco che ovviamente fa la medesima cosa con la mail sucessiva.
    Alla fine ti troverai tutte le mail che hai inviato con il campo "inviata" settato su 'si' in modo da non esser più prese in considerazione alla prossima estrazione, al prossimo passaggio del crontab.
    Ora se non vuoi perdere un "turno", finiti gli invii, fuori dal ciclo, riesegui la query sulla tabella anagrafica e ricontrolli se ci sono ancora mail, se sono finite fai 2 update, uno alla tabella anagrafiche e setti tutti i campi "inviata" = 'no' (es. UPDATE anagrafica SET inviata='no' WHERE categoria='...CATEGORIA DELLA NEWSLETTER...'), dove la "categoria" è uguale a quella della newseletter, e setti il campo "finita" = 'si' della tabella newsletter in modo che venga considerata "inviata a tutti" e non più reinviata a nessuno (es. UPDATE newsletter SET finita='si' WHERE id='...ID DELLA NEWSLETTER...').

    A questo punto se vuoi puoi inserire altre query nei punti che ti interessano o ampliare quelle esistenti per far scrivere i dati che ti servono anche sulle tabelle "invii" e "speditaa", ma mi chiedo, se hai anche solo 1000 utenti complessivi, invia anche solo una mail al mese ad ognuno...in un anno hai 12.000 record solo per sapere a che ora è stata inviata la mail al tal indirizzo.

    Se non è vitale sapere minuto/secondo, nel CMS che utilizza il cliente avrai una sezione con la lista delle newsletter inviate e in invio, questo lo puoi sapere guardando il campo "finita" che puoi usare per far scrivere a video: "invio terminato", "invio non terminato", quindi il cliente puo' sapere quando vuole se la tal newsletter è stata inviata a tutti gli utenti di quella categoria o meno, se vuoi puoi aggiungere due campi alla tabella newsletter "data_inizio", "data_fine", così da avere un idea più precisa (in questo caso puoi usare "data_fine" al posto del campo "finita"), entrambi con data e ora di inizio e fine invii.
    Io di solito, quando finisce un invio, faccio mandare una mail al cliente che gli dice:"La tal newsletter dal tal titolo è stata inviata a tutti gli utenti della categoria tot il tal giorno alle ore tot".

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 © 2026 vBulletin Solutions, Inc. All rights reserved.