Domanda

Devo realizzato una pagina che invierà e-mail a iscritti alla Newsletter. Non v'è più di 14000 abbonati. Voglio usare la funzione php mail () per inviare e-mail a loro. Ma temo che non sarà in grado di inviare e-mail a tutti gli iscritti per il limite max_execution_time php 30sec. La sua non è possibile testare la quantità di e-mail possono essere inviati con l'invio di e-mail a test abbonati. Allora voglio sapere quanto e-mail possono essere inviati con la funzione mail () in 30 secondo limite max_execution_time. Sarà molto utile se mi è possibile rispondere.

anche un'altra domanda - è tempo di esecuzione è mysql contare anche in php?

Apache versione 2.2.13 (Unix) PHP versione 5.2.11

È stato utile?

Soluzione

L'impostazione php max_execution_time è personalizzabile. secondi 30 è l'impostazione predefinita ma è possibile impostarlo su 0 secondi per alcun limite di tempo di esecuzione a tutti. Utilizzare set_time_limit () .

set_time_limit(0);

Se si fa questo, si dovrebbe essere in grado di inviare tutte le vostre email.

Si prega di fare attenzione circa l'invio di più di una e-mail allo stesso server di posta al secondo. Se non si desidera ottenere nella lista nera.

Altri suggerimenti

È necessario eseguire questo da un cronjob o di generare un compito sfondo o usare qualcos'altro più adatto a processi batch.

Si potrebbe ottenere 14000 email fuori in 30 secondi se il vostro server di posta è abbastanza veloce, ma cosa succede quando si ottiene un paio di più abbonati e smette di funzionare correttamente?

Forse si può impostare un flag nel database per ogni utente, quindi reimpostare la bandiera come la loro e-mail viene inviata da un task in background. Ciò contribuirà ad evitare i duplicati e così via, se c'è un problema con il server di posta.

Questo dipende da tante variabili che una singola risposta non è possibile. I fattori includono:

  1. La velocità della CPU
  2. La larghezza di banda a disposizione dal sistema di invio al MTA
  3. La capacità del MTA di accettare messaggi di posta elettronica

L'unico modo per scoprirlo è provare.

Ho avuto questo problema esatto un po 'indietro su uno dei miei progetti. La soluzione è quella di isolare l'invio di email dal sito vero e proprio.

ho codificato una piccola classe che sarebbe stato chiamato per inviare una e-mail. Si sarebbe passata una e-mail basato su modelli, che sarebbe quindi memorizzare nel database in una coda di posta. Sul back-end, ho avuto un job cron che ha chiamato uno script mailer ogni X secondi. Script guarda la coda del database per le email, afferra un numero X dalla coda per tentare di inviare (in ordine di data e ora in), poi avrebbe tentato di consegna. Supponendo che nessun errore sono stati gettati, script dovrebbe contrassegnare il messaggio come inviato. Il passo successivo sarebbe quello di eliminare tutti i messaggi di posta elettronica dalla coda che sono stati inviati e più vecchio di X giorni (conservato per la registrazione).

La speranza che è utile.

Scherzi a parte, se si desidera inviare la stessa mail a dieci persone dal vostro mailapp normale, si fa normalmente creano dieci mail identici o non basta inviare la posta una volta aggiungendo i destinatari alla lista di invio?

Modifica Se la risposta è "Io mando una volta", penso che si dovrebbe guardare in quella direzione anche qui (è anche descritto come inviare a più destinatari http://www.php.net/mail )

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top