Question

Je dois fait une page qui enverra un courrier électronique aux abonnés Newsletter. Il y a plus de 14000 abonnés. Je veux utiliser la fonction php mail () pour envoyer un courriel à eux. Mais je crains que ce ne sera pas en mesure d'envoyer un courrier électronique à tous les abonnés de limite max_execution_time php 30sec. Ce ne est pas possible de tester combien mail peut être envoyé en envoyant un courriel test aux abonnés. Donc, je veux savoir combien Email peut être envoyé avec la fonction mail () dans 30 seconde limite de max_execution_time. Sera très utile si vous pouvez me répondre.

aussi une autre question - est le temps d'exécution est mysql compte également en php?

Apache version 2.2.13 (Unix) PHP version 5.2.11

Était-ce utile?

La solution

Le paramètre php max_execution_time est personnalisable. 30 secondes est la valeur par défaut, mais vous pouvez le mettre à 0 secondes sans limite de temps d'exécution du tout. Utilisez set_time_limit () .

set_time_limit(0);

Si vous faites cela, vous devriez être en mesure d'envoyer tous vos e-mails.

S'il vous plaît faire attention à envoyer plus d'un courrier électronique au même serveur de messagerie par seconde. Vous ne voulez pas être mis à l'index.

Autres conseils

Vous devez exécuter ce à partir d'une tâche cron ou frayer une tâche de fond ou utiliser quelque chose d'autre mieux adapté à des travaux par lots.

Vous pouvez obtenir 14000 e-mails en 30sec si votre serveur de messagerie est assez rapide, mais ce qui se passe quand vous obtenez un peu plus d'abonnés et il cesse de fonctionner correctement?

Peut-être que vous pouvez définir un drapeau dans la base de données pour chaque utilisateur, puis réinitialiser le drapeau comme leur e-mail est envoyé par une tâche de fond. Cela aidera à éviter les doublons et ainsi de suite s'il y a un problème avec le serveur de messagerie.

Cela dépend de tellement de variables qu'une seule réponse n'est pas possible. Ces facteurs comprennent:

  1. La vitesse de la CPU
  2. La bande passante disponible à partir du système d'envoi au MTA
  3. La capacité du MTA à accepter des courriels

La seule façon de le savoir est de l'essayer.

J'ai eu ce problème exact un certain temps sur l'un de mes projets. La solution est d'isoler l'envoi d'email du site réel.

Je une petite classe codé qui serait appelé à envoyer un e-mail. Il serait transmis un courriel basé sur un modèle, qu'il serait alors stocker dans la base de données dans une file d'attente de messagerie. Sur l'arrière, j'avais une tâche cron qui a appelé un script logiciel de messagerie toutes les X secondes. Script regarde la file d'attente de la base de données des e-mails, saisit le numéro de X de la file d'attente pour tenter d'envoyer (ordonnée par horodatage dans), serait alors une tentative de livraison. En supposant qu'aucune erreur n'a été jeté, le script marquerait le message comme envoyé. L'étape suivante serait de purger tous les e-mails de la file d'attente qui ont été envoyés et plus de X jours (gardé pour l'enregistrement).

Hope qui est utile.

Sérieusement, si vous voulez envoyer le même courrier à dix personnes de votre mailapp normale, créez-vous normalement dix mails identiques ou ne vous suffit d'envoyer l'e-mail une fois l'ajout des destinataires à la liste d'envoi?

Modifier Si la réponse est « je l'envoie une fois », je pense que vous devriez regarder dans cette direction ici aussi (il est même décrit comment envoyer à plusieurs destinataires à http://www.php.net/mail )

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top