Pregunta

¿Hay alguna manera puedo enviar correos electrónicos desde aproximadamente 3000 + solicitud escritura de un php sin sobrecargar una dirección IP dedicada ... máximo sería 500 por hora?

Si no me .. aquí se detalla:)

Sólo puedo enviar 500 mensajes de correo electrónico a través de la función mail () en PHP por hora a través de mi IP dedicada, ¿hay alguna manera de que pudiera enviar, por ejemplo, 3000 filas de correos electrónicos extraídos de una dirección de correo electrónico, pero escalonar el correo () funciones fuera de 500 por hora ...

Gracias ya!

¿Fue útil?

Solución

Crea 2 tablas, una para el mensaje de correo electrónico y otro para la lista de destinatarios. A continuación, crear un script para ser ejecutado por cron que comprueba si hay un mensaje nuevo en la tabla de mensajes y si es así envía un lote de correo electrónico a la siguiente serie de destinatarios. Marcando cada destinatario después de que se envió el correo.

A continuación, se crea una interfaz web para su cliente para crear un mensaje y adjuntar destinatarios al mensaje una vez que el usuario marca el mensaje como listo para ir a su trabajo cron lo recoge y lo procesa.

Si no hay mensajes para ser enviados a su trabajo cron no hacer nada.

Otros consejos

Se podía dormir entre las llamadas, o, si ya están en una base de datos, puesto que hay un campo en el que dice que cuando fueron enviados. A continuación, selecciona los que no se han enviado, y empezar desde allí.

Yo pondría un campo en la base de datos para mostrar cuando el último correo electrónico fue enviado a cada usuario y lo envía por correo electrónico que era. También me gustaría tener otra tabla de base de datos para mostrar cada correo electrónico que envió y si se ha enviado a todos los usuarios todavía.

User Table:
Id, UserName, Email, etc, DateTimeOfLastEmail, LastEmailId

Email Table:
Id, EmailSubject, EmailContent, DateTimeSent, SentToAll(True/False), DateTimeOfFinish

Gracias por todas las respuestas! La mejor manera que encontré fue en realidad simplemente dormir () entre las llamadas utilizando el sueño () que he probado 400 mails, esto tomó 17 segundos:)

Es poco probable que el usuario enviará más que el límite de 450 ... pero si lo hacen tengo una sentencia if antes de que el tiempo () termina comprobando si hay más de 450 filas, si lo que va a dormir entre cada uno. .. esto funciona sin bases de datos complicados:)

Gracias!

bien después de hacer un poco de matemáticas puede enviar un correo electrónico cada 8,3 segundos (498 / h), pero no resuelve el problema. Creo que otro enfoque sería el uso de una base de datos, para la consulta 500 y tienen una tarea programada ejecutar el script cada hora.

Así que en la tabla DB podría tener actualizar el guión un campo después de que el correo electrónico ha sido enviado para que la próxima tarea cron se consulta y obtener los siguientes 500 correos electrónicos que necesitan ser enviado.

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