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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Newsletter] Envoi en masse


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [Newsletter] Envoi en masse
    Bonjour,

    j'ai créé pour un client un système de newsletter intégré dans un back-office développé sous CodeIgniter (le moteur de la newsletter est en PHP/MySQL de mon cru et n'utilise pas les outils de CodeIgniter).

    Mon client a récemment changé ses serveurs (moins "tolérants" que les précédents sur la charge), et a injecté de nouveaux destinataires dans la base de données. La newsletter doit être envoyée à plus de 20000 personnes à présent. Sur la dernière campagne, la majorité des newsletter n'est jamais arrivée... Mea culpa, tous les mails étaient envoyés en une fois (il y avait peu de destinataires à la base).

    Je viens réécrire mon script (qui utilise la fonction mail()) qui permet d'envoyer par vagues de 200 destinataires et de générer un rapport d'erreur.

    En gros, le déroulement est :

    - requêtes MySQL pour récupérer tous les destinataires ;
    - enregistrement des e-mails dans un tableau PHP ;
    - comptage des enregistrements ;
    - boucle sur les enregistrements : le script récupère 200 abonnés, envoie la newsletter, et si la fonction mail() ne renvoit pas TRUE, le script écrit dans un fichier quels sont les mails concernés.

    Quand je valide l'envoi (test sur 8200 abonnés), le navigateur se met à mouliner le temps de l'exécution du script, et fini par n'atterrir nulle part, même si je reçois quand même une partie des newsletters (environ 3000).

    Mes questions :
    1. comment faire pour qu'on puisse valider la page d'envoi, et que le script s'exécute sur le serveur, de son côté, indépendemment du navigateur (et donc sans bloquer celui-ci) ?

    2. si je veux faire une pause entre chaque vague d'envoi, est-il correct d'utiliser sleep() ?

    Je vais me tourner vers une soution éprouvée d'e-mailing pour les prochaines campagnes, mais là, je dois impérativement trouver une soution très rapide, avant ce soir...

    Merci d'avance pour vos réponses !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    489
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 489
    Points : 388
    Points
    388
    Par défaut
    Autant il peut etre interessant d'essayer de faire son propre systeme pour apprendre a manipuler.. Autant on peut se simplifier la vie en utilisant des scripts bien faits.. Et l'envoi de newsletters est vraiment un monde a part, a mon humble avis..

    Moi je conseille toujours ce script, avec qui j'ai géré des listes de plus de 50000 utilisateurs sans problemes (bon faut pas etre pressé.. on depasse rarement 5000 mails par heure) :
    http://www.phplist.com/

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci zevince, mais même si je vais sûrement me tourner vers une solution existante, j'avais besoin d'une réponse à mes questions !

    Donc afin de ne pas bloquer le navigateur pendant l'exécution du script, j'ai utilisé exec() :

    La page qui valide le formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec("nohup ./mail.php > out.log 2> error.log &");
    La page mail.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/php
    <?php
    set_time_limit(0);
    # code here...
    ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Newsletter] Envoi de mail en masse par paquet en PHP
    Par wouha dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 09/01/2014, 18h32
  2. PhpMyNewsletter bloque sur un envoi en masse
    Par rvgotti dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/11/2011, 03h02
  3. [Newsletter] Envoi par paquet
    Par Invité dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 04/09/2009, 16h16
  4. Envoie en masse d'email
    Par Chrys01 dans le forum WebDev
    Réponses: 0
    Dernier message: 24/06/2009, 10h21
  5. [Mail] newsletter, envoi de mail par lot
    Par jexl dans le forum Langage
    Réponses: 9
    Dernier message: 08/09/2005, 16h44

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