Envoi Mailing 200 000 emails ..

Envoi Mailing 200 000 emails .. - PHP - Programmation

Marsh Posté le 18-01-2007 à 18:16:31    

Hello à tous,
Je dois envoyer un mailing vers une base email comportant un peu plus de 200 000 entrées ..
Jusque là je fonctionnais avec un script PHP, fonction mail, avec une boucle while ..
Mais ca ne devient plus du tout gérable ..
Pouvez-vous m'aider ?
Merci d'avance !

Reply

Marsh Posté le 18-01-2007 à 18:16:31   

Reply

Marsh Posté le 18-01-2007 à 18:26:45    

avec cron. cron lance toutes les x minutes un script php qui envoie le mail pour un nb donné d'adresses e-mail (par ex, 100).
 
Vue qu'il y a 200 000 adresses, faut soit diminuer l'intervalle de temps, soit augmenter le nb donné d'adresses (passer à 1000)...


Message édité par rufo le 18-01-2007 à 18:28:32
Reply

Marsh Posté le 18-01-2007 à 18:27:43    

Et comment faire pour qu'il n'envoie pas aux mêmes deux fois ?..

Reply

Marsh Posté le 18-01-2007 à 18:29:35    

ncdetoulouse a écrit :

Et comment faire pour qu'il n'envoie pas aux mêmes deux fois ?..


 
ben tu prend les 1000 premières adresses e-mail de ta base, ensuite les 1000 suivantes, etc.  
En SQL, LIMIT n,m tu connais?
 
Après, si dans ta BD t'as des doublons, à toi de faire une requête plus chiader pour éliminer les doublons à l'aide de DISTINCT ou GROUP BY...


Message édité par rufo le 18-01-2007 à 18:30:36
Reply

Marsh Posté le 18-01-2007 à 18:30:23    

Malheureusement non .. :-(

Reply

Marsh Posté le 18-01-2007 à 18:31:07    

ncdetoulouse a écrit :

Malheureusement non .. :-(


 
ben va lire la doc de MySQL à propos de LIMIT.
http://dev.mysql.com/doc/refman/5.0/fr/select.html


Message édité par rufo le 18-01-2007 à 18:32:12
Reply

Marsh Posté le 18-01-2007 à 18:31:36    

Merci de m'avoir aiguyé en tout cas ;)
Merci beaucoup !

Reply

Marsh Posté le 18-01-2007 à 18:49:08    

tu fais pas en php dans ton httpd et c'est tout.
 
si t'aimes vraiment php, tu le fais en cli, sinon tu utilises un autre langage de script.

Reply

Marsh Posté le 18-01-2007 à 18:53:56    

Dans mon httpd, c'est a dire ?

Reply

Marsh Posté le 19-01-2007 à 10:30:37    

ben tu passes pas par apache. Tu lances directement ton script via php.exe.

Reply

Marsh Posté le 19-01-2007 à 10:30:37   

Reply

Marsh Posté le 19-01-2007 à 10:42:00    

Euh, le limit, c'est bien mais pas suffisant je pense... pour mon appli de niouzeletter, j'utilise quelques champs supplémentaires pour pas envoyer deux fois le mail à la même personne:
 
- un flag traitement : 0 = à traiter, 1 = traité, 2 = erreur traitement
- date de traitement format timestamp
 
Ensuite, je fais une boucle ou je traite peu de lignes (entre 500 et 1000) puis un rafraichissement de la page via un "header()"

Reply

Marsh Posté le 19-01-2007 à 10:43:56    

ncdetoulouse a écrit :

Jusque là je fonctionnais avec un script PHP, fonction mail, avec une boucle while ..
Mais ca ne devient plus du tout gérable ..


C'est écrit cash dans la doc, ça ouvre un socket à chaque fois, donc il ne faut jamais le mettre dans un while...

Reply

Marsh Posté le 19-01-2007 à 10:44:06    

soulmanto a écrit :

Euh, le limit, c'est bien mais pas suffisant je pense... pour mon appli de niouzeletter, j'utilise quelques champs supplémentaires pour pas envoyer deux fois le mail à la même personne:
 
- un flag traitement : 0 = à traiter, 1 = traité, 2 = erreur traitement
- date de traitement format timestamp
 
Ensuite, je fais une boucle ou je traite peu de lignes (entre 500 et 1000) puis un rafraichissement de la page via un "header()"


 
ben si tu prends les adresses e-mail par paquets de taille identique, y'a aucune raison d'envoyer à une même adresse 2 fois le même mail. je parts du principe que tu n'as pas de doublon dans ta BD.

Reply

Marsh Posté le 19-01-2007 à 10:46:47    

rufo a écrit :

ben si tu prends les adresses e-mail par paquets de taille identique, y'a aucune raison d'envoyer à une même adresse 2 fois le même mail. je parts du principe que tu n'as pas de doublon dans ta BD.


 
Le gros intérêt d'utiliser un flag (ou mieux, d'utiliser une table séparée pour y stocker les mails à envoyer) permet la reprise en cas de plantage.
Sur un traitement de cette importance, c'est priceless.

Reply

Marsh Posté le 19-01-2007 à 11:05:15    

FlorentG a écrit :

C'est écrit cash dans la doc, ça ouvre un socket à chaque fois, donc il ne faut jamais le mettre dans un while...

Comment tu fais pour envoyer des mails à plusieurs personnes sans qu'elles voyent les adresses des autres si tu ne mets pas la fonction mail dans une boucle?

Reply

Marsh Posté le 19-01-2007 à 11:07:08    

omega2 a écrit :

Comment tu fais pour envoyer des mails à plusieurs personnes sans qu'elles voyent les adresses des autres si tu ne mets pas la fonction mail dans une boucle?


 
envoi en CCC (copie carbone cachée) sans doute...

Reply

Marsh Posté le 19-01-2007 à 11:09:01    

sinon tu utilises sarbacane :D

Reply

Marsh Posté le 19-01-2007 à 11:13:53    

rufo a écrit :

envoi en CCC (copie carbone cachée) sans doute...

Si c'est ça, alors c'est le genre de message qui part directement à la poubelle chez moi : je ne lit que trés trés rarement les mailling qui ne me sont pas clairement adressé. ;)

Mxtrem a écrit :

sinon tu utilises sarbacane :D

Lol, pour l'avoir utilisé au boulot, je n'apellerais pas ça une méthode idéale vu que sarbacane est incapable (du moins dans la version que j'ai utilisé) de récupérer les données directement dans mysql et qu'il n'est pas fait pour personaliser les mails (je n'ai jamais trouvé comment lui dire de mettre le nom du destinataire dans le texte du mail)

Reply

Marsh Posté le 19-01-2007 à 11:15:51    

Chaos Intestinal a écrit :

Le gros intérêt d'utiliser un flag (ou mieux, d'utiliser une table séparée pour y stocker les mails à envoyer) permet la reprise en cas de plantage.
Sur un traitement de cette importance, c'est priceless.


 
Ca me gène d'intégrer dans mon MCD un champ relatif à un traitement. Si tu veux un mécanisme de reprise, tu peux toujours sauvegarder dans un fichier le nb de paquets d'envois que t'as déjà fait. Comme tu connais la taille d'un paquet, tu sais où faut faire repartir le LIMIT...

Reply

Marsh Posté le 19-01-2007 à 11:17:24    

omega2 a écrit :

Comment tu fais pour envoyer des mails à plusieurs personnes sans qu'elles voyent les adresses des autres si tu ne mets pas la fonction mail dans une boucle?


Ben tu fais pas, parce que ça nique le script :D

Reply

Marsh Posté le 19-01-2007 à 11:25:40    

FlorentG > Dans ce cas, on ne fait jamais de moteur de recherche : ca nique le serveur de devoir chercher.[:fitterashes]  
et on ne fait pas de saisie de message : ca nique l'espace disque. [:anathema]  
 
 :D  :D  :D  :D  :D  :D  
 
Bon, ok,  je [:gzk]  
 
 
 
 
Bon, sérieusement, faut bien les envoyer les messages, tu fais comment?

Reply

Marsh Posté le 19-01-2007 à 11:35:40    

Je sais pas, j'ai pas encore réfléchis :D Mais dès que j'en aurais besoin, je me tournerais vers une solution qui tourne sur le serveur, comme l'a dit Taz

Reply

Marsh Posté le 19-01-2007 à 16:24:45    

omega2 a écrit :

Lol, pour l'avoir utilisé au boulot, je n'apellerais pas ça une méthode idéale vu que sarbacane est incapable (du moins dans la version que j'ai utilisé) de récupérer les données directement dans mysql et qu'il n'est pas fait pour personaliser les mails (je n'ai jamais trouvé comment lui dire de mettre le nom du destinataire dans le texte du mail)


 
 
tu convertis les données mysql en csv et le tour est joué, ensuite pour ce qui est de la personnalisation, sisi ça fonctionne (me souvient plus comment) :D
 
par contre ne pas trop l'utiliser, mon hebergeur avait reçu des plaintes pour spam  :whistle:

Reply

Marsh Posté le 19-01-2007 à 16:29:27    

Mxtrem a écrit :

tu convertis les données mysql en csv et le tour est joué

Je trouve que c'est quand même lourd de devoir passer par un fichier intermédiaire alors qu'on a déjà une belle liste d'email dans une base de donnée.
Enfin, bref, on s'égare du sujet initial je crois même si pour moi la discution est intéressante.

Reply

Marsh Posté le 19-01-2007 à 16:36:33    

il existe plusieurs scripts de mailing list (très bons), il suffit qu'il y importe sa base de donnée et les emails seront simplements envoyés par le biais du mail()...
je l'avais testé une fois sur 3 ou 4000 emails et ça avait impeccablement fonctionné

Reply

Marsh Posté le 19-01-2007 à 16:37:24    

Fonctionné comment ? En mettant le serveur par terre ? Ou en laissant un peu de place pour respirer ? :D

Reply

Marsh Posté le 19-01-2007 à 16:40:11    

no soucy pour le serveur, enfin après, c'est sur que si il est chez multimania :D...

Reply

Marsh Posté le 19-01-2007 à 16:54:40    

FlorentG a écrit :

Fonctionné comment ? En mettant le serveur par terre ? Ou en laissant un peu de place pour respirer ? :D


 
+10000
 
Ca représente quand même une charge pas du tout négligeable.


---------------
♈ ♋ ♌ ♍ ♎ ♏ - Agora Fidelio | Galerie d'art Toulousaine
Reply

Marsh Posté le 19-01-2007 à 17:15:03    

toutafay, ça avait cependant fonctionné à environ 90%

Reply

Marsh Posté le 14-02-2007 à 17:53:08    

FlorentG a écrit :

Fonctionné comment ? En mettant le serveur par terre ? Ou en laissant un peu de place pour respirer ? :D


 
En meme temps si tenvois une NL sur 200 000 @ faut pas avoir un celeron avec 512mo de RAM  :ange:  
 
perso on shoot 6M° d' @ par semaine avec une solution maison du type while barbarre + clustering smtp
 
no soucy ophély

Reply

Marsh Posté le 14-02-2007 à 20:37:09    

nycius a écrit :

En meme temps si tenvois une NL sur 200 000 @ faut pas avoir un celeron avec 512mo de RAM  :ange:  
 
perso on shoot 6M° d' @ par semaine avec une solution maison du type while barbarre + clustering smtp
 
no soucy ophély


 
En répartissant les 6000k emails sur la semaine ?
Si oui, ça doit faire un peu moins de 1000 email par minutes : Sur un serveur un temps soit peu puissant dédié à ça , et avec une appli bien codée, j'ai pas l'impression que ça soit si extraodinaire que ça :p


---------------
ilonet - Internet, Informatique et Webmastering
Reply

Marsh Posté le 15-02-2007 à 08:53:27    

jukieng a écrit :

En répartissant les 6000k emails sur la semaine ?
Si oui, ça doit faire un peu moins de 1000 email par minutes


 
On a un capacié pourvant aller jusqu'à 2000@ /mn environ
 

jukieng a écrit :

Sur un serveur un temps soit peu puissant dédié à ça , et avec une appli bien codée, j'ai pas l'impression que ça soit si extraodinaire que ça :p


 
 :jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed