Como función mucho mail () se puede utilizar en tiempo de ejecución de 30 segundos?

StackOverflow https://stackoverflow.com/questions/1670767

  •  13-09-2019
  •  | 
  •  

Pregunta

Tengo que hizo una página que enviará por correo electrónico a los suscriptores del boletín. Hay más de 14 000 de abonado. Quiero utilizar la función PHP mail () para enviar correo electrónico a ellos. Pero me temo que no va a ser capaz de enviar correo electrónico a todos los suscriptores de límite de tiempo máximo de ejecución de PHP 30 seg. No es posible evaluar la cantidad de correo electrónico se pueden enviar mediante el envío de correo electrónico de prueba a los suscriptores. Por eso quiero saber la cantidad de correo electrónico puede ser enviado con la función mail () en 30 segundo límite de tiempo máximo de ejecución. Será muy útil si usted me puede contestar.

también otra pregunta - ¿Es tiempo de ejecución de MySQL es también contar en php?

Apache versión 2.2.13 (Unix) PHP versión 5.2.11

¿Fue útil?

Solución

La configuración php max_execution_time es personalizable. 30 segundos es el valor por defecto, pero se puede establecer a 0 segundos sin límite de tiempo de ejecución en absoluto. Usar set_time_limit () .

set_time_limit(0);

Si usted hace esto, usted debe ser capaz de enviar todo su correo electrónico.

Tenga cuidado con el envío de más de un correo electrónico en el mismo servidor de correo por segundo. Usted no quiere quedar en la lista negra.

Otros consejos

Debe ejecutar esta tarea programada de una o generar una tarea de fondo o usar alguna otra cosa más adecuado para trabajos por lotes.

Es posible obtener 14.000 correos electrónicos a cabo en 30 segundos si su servidor de correo es lo suficientemente rápido, pero lo que sucede cuando usted es un poco más suscriptores y deja de funcionar correctamente?

Tal vez se puede establecer un indicador en la base de datos para cada usuario, y luego restablecer el indicador como su correo electrónico es enviado por una tarea de fondo. Eso ayudará a evitar duplicados y así sucesivamente si hay un problema con el servidor de correo.

Eso depende de tantas variables que una sola respuesta no es posible. Los factores incluyen:

  1. La velocidad de la CPU
  2. El ancho de banda disponible en el sistema de envío al MTA
  3. La capacidad de la MTA para aceptar mensajes de correo electrónico

La única manera de averiguarlo es intentarlo.

Tenía este problema exacto hace un tiempo en uno de mis proyectos. La solución es aislar el envío desde el sitio real de correo electrónico.

codifiqué una pequeña clase que sería llamada para enviar un correo electrónico. Sería aprobó una plantilla de correo electrónico, que sería entonces almacenar en la base de datos en una cola de correo. En la parte final, que tenía una tarea programada que se llama un script gestor de correo cada X segundos. Script busca en la cola de la base de datos de correos electrónicos, agarra un número X de la cola para intentar enviar (ordenados por fecha y hora en), entonces sería intentar la entrega. Suponiendo que no hay errores fueron lanzados, el guión podría marcar el mensaje como enviado. El siguiente paso sería para purgar todos los mensajes de correo electrónico de la cola que fueron enviados y mayores de X días (guardado para el registro).

La esperanza de que es útil.

En serio, si desea enviar el mismo correo a diez personas de su mailapp normal, es lo que normalmente crea diez electrónicos idénticos o sólo enviar el correo una vez que la adición de los destinatarios a la lista de emisión?

Editar Si la respuesta es "lo envío una vez", creo que se debe mirar en esa dirección aquí también (incluso se describe cómo enviar a varios destinatarios a la http://www.php.net/mail )

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top