2017-09-26 2 views
0

J'utilise le serveur web Amazon .. J'ai une fonction pour le courrier comme ci-dessous,déclencheur et exécuter une requête en php back-end

function mail_send($to){ 
    require_once("class.phpmailer.php"); 
    require_once("class.smtp.php"); 
    $mail->AddAddress($to); 
    $mail->Send(); 
} 

Chaque fois que je veux envoyer du courrier, je suis juste appeler cette fonction par,

mail_send("[email protected]"); 

donc, si je suis en train d'envoyer des messages en boucle, cela prendra plus de temps pour envoyer du courrier .. environ il faudra 5 secondes pour l'envoi de chaque message .. Mais dans aws, au maximum le temps d'exécution est de 60 secondes dans le navigateur, après il montre une réponse vide ... Donc, j'ai besoin de déclencher le courrier et il doit être exécuté en bac kend. Donc, si j'envoie du courrier à 10 membres, il faut seulement déclencher la fonction mail 10 fois et le chargement de la page doit être arrêté.

J'ai essayé CURL, mais il attend aussi la réponse de l'envoi de chaque mail, il prendra le même temps pour s'exécuter

+1

Si le contenu du courrier est le même pour tous les utilisateurs, pourquoi ne pas envoyer un e-mail avec tous les utilisateurs de BCC au lieu d'utiliser la boucle? – Dmitri

+0

@Dmitri Mail contenu est le même, mais pas pour les utilisateurs, Ils sont des clients. Je dois envoyer un mail à chaque client – Loki

Répondre

1

Envoie depuis un script cron ou une autre tâche planifiée qui n'a pas de délai d'attente - recherchez ici comment procéder.

Envoyez plus efficacement - voir the mailing list example provided with PHPMailer. Obtenez votre serveur de messagerie local pour travailler pour vous - soumettre des messages à elle (qui sera très rapide) et laissez-le face à des livraisons lentes - c'est à cela que servent les serveurs de messagerie.

Je peux voir que vous avez basé votre code sur un exemple obsolète et que vous utilisez une ancienne version de PHPMailer, donc get the latest version.