php: cercare una libreria di e-mail che supporti l'accodamento dei messaggi

Sto cercando una libreria di email per creare un sistema di newsletter all'interno della nostra azienda. dovrebbe supportre l'accodamento dei messaggi (l'invio di e-mail alla coda, l'invio automatico in background) senza bloccare il server web. quindi penso che l'elaborazione in background debba essere eseguita come servizio in background sul server, simile a aspmail ma per php.

eventuali suggerimenti? Grazie

Ho usato PEAR's Mail_Queue per accodare più di 200.000 mail alla volta. Compilare un database è facile e veloce, anche con contenuti personalizzati, e quindi uno script abbastanza semplice invia circa 250 volte, se la media del carico non è troppo alta. Quindi scorre in loop e invia il batch successivo. Funziona dallo background, ed è facile da impostare in modo tale che se la tabella della coda è vuota, si ferma per un attimo prima di ricontrollare (perché il controllo più volte al secondo non aiuta nessuno).

Il vantaggio di controllare anche la media del carico della macchina è che non farà altro che sgranocchiare la coda senza problemi di carenza di risorse auto-create.

Il tutorial Mail_Queue ti offre praticamente tutto ciò che ti serve: basta scorrere lo script "send_messages.php" (dalla row di command è meglio) finché la coda del database non è vuota, quindi sospendi un po 'e riavvia il ciclo.

Consiglierei l'uso di Gearman per creare un demone autonomo in attesa di processi inviati dal tuo server web.

C'è un bell'articolo: http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/ che spiega come creare demoni in puro codice PHP.

Sul lato server web, è sufficiente creare lavori (client Gearman) e accodarli in modo asincrono nel demone gearman. Poi hai il tuo demone php mailer in attesa di lavori (operaio gearman), e li esegui quando diventano disponibili in coda.

Se si dispone di un'enorme quantità di posta da submit, è ansible anche distribuire i lavoratori su più server, che attenderanno la stessa coda di lavoro del gearman, per ottimizzare l'elaborazione della posta elettronica.

dovrebbe supportre l'accodamento dei messaggi (l'invio di e-mail alla coda, l'invio automatico in background) senza bloccare il server web. quindi penso che l'elaborazione in background debba essere eseguita come servizio in background sul server

WTF? La gestione delle code è il lavoro del sistema di posta elettronica – è ciò che è stato progettato per fare – NON è responsabilità dell'applicazione parlare con esso. E se il tuo server di posta si blocca each volta che invii un messaggio, c'è qualcosa di molto sbagliato in questo.

Sembra che tu stia cercando di scrivere il tuo MTA invece di correggere ciò che è sbagliato nella tua attuale fornitura.

Se è necessario fornire funzionalità offline, installare un MTA sulla macchina su cui è in esecuzione PHP.

È ansible utilizzare i redis come coda dei messaggi :

coda dei messaggi

Redis è un server di struttura dati molto veloce e triggersmente sviluppato. Scrivere qualcosa usando i redis sarà facile come torta. Perché mi piace redis su altre code di messaggi:

  • triggersmente sviluppato.
  • Redis:

    un archivio di valori-chiave avanzato e open source. Viene spesso definito come un server della struttura dati poiché le chiavi possono contenere stringhe, hash, elenchi, set e serie ordinate.

    È molto potente

  • Molto facile da installare: make .
  • ha c-binding in quasi tutte le lingue preferite.
  • la libreria del client c hiredis è molto user friendly. Potresti scrivere qualcosa in C se vuoi davvero delle buone performance. Questo esempio (grazie a hiredis) ho creato solo compilazioni usando solo make .

A causa della natura di ciò che è richiesto non penso ci sia una soluzione pronta per l'uso specifica per i compiti di MTA, tuttavia potrei sbagliarmi.

Ho recentemente creato qualcosa di simile, che consiste nel mettere le e-mail da submit in una coda di database con un field per mostrare se è stata inviata o less, e quindi eseguire un lavoro CRON per elaborare lo script di invio per un batch impostato, submit quelle e-mail e contrassegnare come inviato, risciacquare e ripetere.

Sarebbe interessato a chattare con te via email / msn solo per vedere cosa hai pianificato per il sistema visto che fondamentalmente sto facendo la stessa cosa.