IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Gérer l'envoi permanent de gros e-mailing


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 100
    Points
    100
    Par défaut Gérer l'envoi permanent de gros e-mailing
    Bonjour,

    Voilà j'ai un petit soucis et j'aimerais voir avec vous comment on peut aborder le problème. Voici la situation :

    J'ai une grosse application en php qui permet au utilisateur de faire des mailings (envois de mails en masse). Certains ont des envois allant jusqu'à 40000 destinataires et la chose importante est que chaque mail est personnalisé (le contenu varie d'une personne à l'autre).

    J'ai donc un script qui prépare le contenu d'un mail et l'envoie et il fonctionne bien.
    J'aimerais maintenant trouver une solution afin d'automatiser l'envoi de tous les mails et cela n'importe quand dans la journée. En fait, dès qu'un mailing est prêt, je dois l'envoyer. J'ai pensé au CRON linux mais je me vois mal envoyer un mail toute les minutes, ça prendrait des mois.

    Comment géreriez-vous le problème vous ?
    NiGhMa

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu gères ton envoi avec une base de données, tu n'as qu'a marquer les mails envoyés ; et donc envoyer par lot de X ceux qui n'ont pas encore été envoyés.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 100
    Points
    100
    Par défaut
    C'est en effet à cela que j'ai réfléchi mais mon problème se situe plus au niveau de la gestion du lancement du script. Il faudrait une sorte de CRON mais qui tourne en boucle tout le temps sans prendre trop de ressources lorsqu'il n'y a pas de mailing à envoyer. J'ai fait le script qui fait un test rapide et qui fait un sleep(60) lorsqu'il n'y a pas de mail.

    J'ai essayé de mettre un script Perl qui s'exécute en boucle mais je n'aime pas trop cette solution.

    En avez-vous d'autres ?
    NiGhMa

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faudrait une sorte de CRON
    Pourquoi pas un vrai CRON ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Points : 416
    Points
    416
    Par défaut
    Le CRON est la meilleur solution pour cela.
    Les mails à envoyer, tu peux les stocker dans une base, lorsque ton script passe tu déplaces les mails envoyés dans une autre tables, ou tu changes une valeurs d'une colonne.
    Tu n'as plus qu'a exécuter ton script toutes les X minutes celui-ci prenant Y mails dans la tables pour les envoyer.

    Pour X et Y faut voir ce qui est le plus rentable.
    Par exemple si ton script arrive a envoyer 50 mails à la minutes alors il faudra exécuter ton script toutes les minutes et celui-ci devrait envoyer au plus 50 mails à chaque fois.
    Si tu utilises un X plus grand tu pourrais avoir des soucis de double envoies.

    Pour éviter cela tu peux concevoir un système de "lock". En gros quand ton script démarrer tu crées un fichier texte. Et quand il se stop tu effaces ce fichier.
    Il faut ensuite ajouter, avant la création du fichier, un teste portant sur l'existence de ce fichier. S'il existe alors tu ne fais rien du tout.
    Smiley de Plomb 2009
    Anciennement FrancoisIT

  6. #6
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 100
    Points
    100
    Par défaut
    Depuis ce matin, j'y réfléchi et je suis arrivé plus ou moins à la même conclusion avec une colonne dans la table des mails qui servirait finalement de lock (un timestamp par exemple).

    Il faut maintenant voir quel est le meilleur rendement concernant les X mails par minutes. Le serveur qui traite et envoie les messages est parfois soliciter par d'autres jobs, les performances ne sont donc pas linéaire.

    Je dois voir maintenant ce qu'il se passe si le job lancé à la minute x+1 ne rentre pas en conflit avec le job de la minute x. Le lock devrait éviter d'envoyer 2 fois le même message normalement.
    NiGhMa

Discussions similaires

  1. [PrestaShop] Gérer l'envoi d'e-mail avec template
    Par amarcil dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 23/12/2010, 03h01
  2. Gérer l'envoi et la réception des mails
    Par seb92400 dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/01/2008, 16h45
  3. Gérer l'envoi de mail préformaté avec outlook depuis données Excel
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 06/12/2007, 10h52
  4. [Mail] Envoie de caractère spéciaux par mail() ?
    Par Oberown dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2005, 16h13
  5. Réponses: 1
    Dernier message: 15/07/2005, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo