|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2010 Messages : 77 ![]() |
Bonjour à tous,
J'ai mis en place un moteur d'emailing qui doit être lancer tous les jour sà une heure précise via une tache symfony que j'ai crée. Le problème c'est que lorsqu'il s'agit d'envoyer un emailing à 10 ou 15 personnes ca marche sans probleme; mais là je dois l'envoyer à 8000 personnes et ca ne marche pas meme pas pour le premier. Dans mon fichier factories.yml j'ai essayer ces deux strategies d'envoi :spool et realtime rien n'a change Code :
Code :
Code :
Code :
Au secouuuuuuuuurs!!!!!!!! |
||||||||
|
|
00
|
|
|
#2 |
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 28 ![]() |
Je dis peut être une bêtise, mais ca ne peut pas être dû au fait que par défaut PHP limite le temps d'exécution d'une page à 30secondes, et que envoyer 8000emails risque de mettre plus que 30sec ?
|
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2010 Messages : 77 ![]() |
je sais pas trop comment ca marche; mais je pense que, vu que c'est une tache que j'appelle et non une page web; le timing de 30s n'est pas pris en compte. bon après je suis pas très sur de c que je dis.
Mais même si le timing est de 30s , il devait au moins marcher pour les premiers mails, ce qui n'est pas le cas. ceci dit où est ce que je peux augmenter le temps d'exécution sur un projet symfony??. |
|
|
00
|
|
|
#4 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
oOZarkOo +1
Tu envoies 8000 courriels différents ou un courriel à 8000 personnes ? Edit La durée maximum d'exécution est pour tous les scripts PHP, ligne de commande ou pas. La modification est dans les php.ini. Attention, suivant ta configuration, il est possible que tu aies un php.ini pour le web et un autre pour la ligne de commande. Vérifie avec un phpInfo() que tu peux lancer en web et en local pour comparer.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2010 Messages : 77 ![]() |
j'essaye d'envoyer 8000 e-mails à 8000 personnes; parce que chaque e-mail est personnaliser par le nom, prénom et autre
je viens d'augmenter la timeout et redémarrer le serveur, mais rien ne marche! |
|
|
00
|
|
|
#6 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
A raison de 2 courriel par seconde, il nous reste dans les 4000s de traitement, soit plus d'une heure, on est loin des 30"...
Peut-être avec un traitement réentrant, dans le genre, tu traites X courriel, puis ton application renvoie la requête et se ferme.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2010 Messages : 77 ![]() |
Je parcoure une table avec la boucle for; je récupère chaque personne et ses info, je configure mon template et j'envoie un émail, jusqu'à la fin de la table mail.bien sûr y a deux ou trois méthodes qui sont appelées entre temps.
Ca devrait aller ca!?? PS: la population était au nombre de 8133 et le truc a juste route 122 mails s'est arrêté.J n sais pas si cette info peut vous guider. |
|
|
00
|
|
|
#8 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Ceci confirme la durée de traitement de plus ou moins (un peu moins) de deux courriel par seconde.
Il faut donc, soit que les traitements durent moins de 30 seconde (peut réaliste), soit utiliser un code ré-entrant. Voir précédant poste. Je ne pense pas que passer les paramètres de php pour autoriser des scripts de 90 minutes soit une bonne idée. Edit Une autre idée. Tu crées soit un champs dans ta table, soit une table supplémentaire pour ceux qui doivent recevoir un courriel. L'idée est de pouvoir facilement vérifier à qui le courriel à été envoyé. Tu limites volontairement ta procédure à un certain nombre de personnes parmi celles qui n'ont pas encore eu leur courriel (dison 100, soit moins de 30" de traitement). Tu crées un cron qui envoie la commande toutes les minutes. Il faudra donc 80 minutes pour envoyer tes courriels. Et plus de blocage. Après, tu peux toujours adapter en fonction des performances. Attention aux procédures anti-spam de certains serveur de messagerie (ton serveur, pas celui des destinataires) qui risquent de voir ta procédure comme une tentative de spam. Attention aux demandes préalables d'autorisation d'envoyer un courriel qui doit être faîte à tous particulier en France.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
Copyright © 2000-2012 - www.developpez.com