C'è un limite quando si utilizza la function di posta php?

Sto usando php e mysql.

Ho intenzione di submit e-mail 10k ++ (più diecimila) per aggiornare i miei iscritti, e questa è la prima volta che li invierò. Userò la function di posta php, fondamentalmente ecco cosa farò:

Per prima cosa prendi i dati dal database:

Select name, email FROM data 

Successivamente, utilizzando il ciclo while per submit i dati:

 while($r = mysql_fetch_assoc($exe)){ ... if($mail){ echo "success<br>"; } else { echo "failed<br>"; } } echo "Sent all"; 

Includo l'istruzione if.. else, per garantire che each email sia inviata con successo. C'è qualcosa di cui ho bisogno di prendermi cura? Avrò problemi durante l'invio agli utenti di 10K ++?

C'è un limite di numbers di email che stai per submit?

Si prega di essere consapevoli di questa nota dalla documentazione della posta :

Nota: vale la pena notare che la function mail () non è adatta per grandi volumi di e-mail in un ciclo . Questa function apre e chiude un socket SMTP per each e-mail, che non è molto efficiente.
Per l'invio di grandi quantità di email, vedere i pacchetti PEAR :: Mail e »PEAR :: Mail_Queue.

Nessun limite al numero di email, ma c'è il limite di tempo dello script PHP. Vedi il max_execution_time impostato nel tuo php.ini, tipicamente è di 20 o 30 secondi. Se non lo sai, usa phpinfo () per scoprirlo.

Inoltre, dovresti prendere alcune misure per impedire agli utenti di ricevere troppe email. Dovresti contrassegnarli come inviati, in modo che non ricevano post doppio se accidentalmente lo script viene avviato due volte.

Oltre a questo, dovresti notare che la function di posta di php non è per niente ottimizzata. Potresti provare alcune librerie, come phpmimemessage o altre, che ti permetteranno di fare un po 'di memorizzazione nella cache, ad esempio, tra molte altre funzionalità.

Dovresti creare una coda di email inviate / non riuscite, quindi puoi provare a submit nuovamente i tentativi falliti ed evitare di submit nuovamente le email se qualcosa wheresse andare storto.

Non creare un ciclo che tenta di submit email 10k via mail ()

Inoltre, il limite più probabile che colpirà sarà quello del server di posta dell'ISP o dell'host.

Potresti anche voler impostare un vero e proprio strumento di mailing list, come mailman , o alless usare gruppi di alias (se ansible).

Inoltre, vedere le domande correlate su serverfault: https://serverfault.com/questions/67154/sending-an-email-to-about-10k-users-not-spam , where viene menzionata la list PHP , insieme ad altre. E qui – https://serverfault.com/questions/68357/whats-the-best-way-to-send-bulk-email .

Puoi usare pear :: Mail_Queue http://pear.php.net/package/Mail_Queue/

Farà davvero un buon lavoro.