Envoi Mailing 200 000 emails .. - PHP - Programmation
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)...
Marsh Posté le 18-01-2007 à 18:27:43
ReplyMarsh 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...
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
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.
Marsh Posté le 19-01-2007 à 10:30:37
ben tu passes pas par apache. Tu lances directement ton script via php.exe.
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()"
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 .. |
C'est écrit cash dans la doc, ça ouvre un socket à chaque fois, donc il ne faut jamais le mettre dans un while...
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: |
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.
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.
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?
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...
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 |
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)
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. |
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...
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
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.
et on ne fait pas de saisie de message : ca nique l'espace disque.
Bon, ok, je
Bon, sérieusement, faut bien les envoyer les messages, tu fais comment?
Marsh Posté le 19-01-2007 à 11:35:40
Je sais pas, j'ai pas encore réfléchis Mais dès que j'en aurais besoin, je me tournerais vers une solution qui tourne sur le serveur, comme l'a dit Taz
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)
par contre ne pas trop l'utiliser, mon hebergeur avait reçu des plaintes pour spam
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.
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é
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 ?
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 ...
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 ? |
+10000
Ca représente quand même une charge pas du tout négligeable.
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 ? |
En meme temps si tenvois une NL sur 200 000 @ faut pas avoir un celeron avec 512mo de RAM
perso on shoot 6M° d' @ par semaine avec une solution maison du type while barbarre + clustering smtp
no soucy ophély
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 |
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
Marsh Posté le 15-02-2007 à 08:53:27
jukieng a écrit : En répartissant les 6000k emails sur la semaine ? |
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 |
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 !