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 :

[Mail] Envoi d'e-mails en grosse quantité : e-mails dupliqués


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Points : 28
    Points
    28
    Par défaut [Mail] Envoi d'e-mails en grosse quantité : e-mails dupliqués
    bonjour à tous et merci par avance

    j'ai fait une page php pour envoi de mail à plusieurs personnes (70)
    j'ai donc une base mysql avec dedans l'adresse mail et leur password

    S'il y a 4 personnes, tout ce passe bien
    s'il y a 70 personnes, le script met beaucoup de temps à s'effectuer et SURTOUT :
    dans les logs d'accces d'apache, la page php est appellé 11 fois !
    Comme elle est appelée 11 fois au lieu d'avoir un mail, chaque personne reçoit 11 mails !!!

    Je ne comprends pas ce comportement !

    est ce que vous avez une piste ?

    Voici le script, mais je ne pense pas que l'erreur vienne du scipt (ça marche pour 4 personnes) mais d'un comportement vicieux de la fonction mail ...

    fontion mail : Retourne TRUE si le mail a été accepté pour livraison
    qu'est ce que ça veut dire ?
    autre piste, est ce que j'engorge sendmail ou le serveur de mail, qui lui réagit d'une façon que je comprends pas ?

    j'ai épuré le code (variable de texte, connection mysql ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    $from = $nom." <".$from.">";
     
    $limite = "_----------=_parties_".md5(uniqid (rand()));
     
    $header  = "Reply-to: ".$from."\n";
    $header .= "From: ".$from."\n";
    $header .= "X-Sender: <".$site.">\n";
    $header .= "X-Mailer: PHP\n";
    $header .= "X-auth-smtp-user: ".$from." \n";
    $header .= "X-abuse-contact: ".$from." \n";
    $header .= "Date: ".date("D, j M Y G:i:s O")."\n";
    $header .= "MIME-Version: 1.0\n";
    $header .= "Content-Type: multipart/alternative; boundary=\"".$limite."\"";   // si c'est un message txt et html
    //$header .= "Content-Type: multipart/mixed; boundary=\"".$limite."\"";   // si message txt html et piece jointe
     
     //-----------------------------------------------
     //requete
     //-----------------------------------------------
     
     
     
     
    $sql = "SELECT mail, pwd FROM t_essai" ; 
    $reponse = mysql_query($sql) or die(mysql_error());
     
    while ($donnees = mysql_fetch_array($reponse) )
    {
    			$message = "";
    			$message .= "--".$limite."\n";
    // message html
    			$message .= "Content-Type: text/plain\n";
    			$message .= "charset=\"iso-8859-1\"; ";
    			$message .= "Content-Transfer-Encoding: 8bit;\n\n";
    			$message .= $text_1 . $donnees['mail'] . $text_2 . $donnees['pwd'] . $text_3 ;
     
     
     
    			$message .= "\n\n--".$limite."\n";
    			$message .= "Content-Type: text/html; ";
    			$message .= "charset=\"iso-8859-1\"; ";
    			$message .= "Content-Transfer-Encoding: 8bit;\n\n";
     
     
    			$message .= $html_1 . $donnees['mail'] . $html_2 . $donnees['pwd'] . $html_3 ;
    			$message .= "\n--".$limite."--";
     
    //envoi mail			
    			$to = $donnees['mail']  ;
     
    			if(mail($to, $sujet, $message, $header)) 
    			{
    				echo 'Le message a été envoyé à ' . $to . ' - <br />';
    			}
    			else
    			{
    				echo 'Le message n\'a pu être envoyé' ;
    			} 
     
    }

  2. #2
    Membre habitué Avatar de Couz02
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 232
    Points : 182
    Points
    182
    Par défaut
    Bonsoir,

    Je vois pas trop où est le problème, c'est étonnant que la page soit appellée plusieurs fois même.

    As tu essayé de mettre une pause entre chaque envoi pour voir de 100ms par exemple.
    N'oubliez pas que
    Msdn

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    bonjour et merci pour ta réponse

    concernant ta tempo, je ne l'ai pas fait
    Demain j'essaie
    a+

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    la tempo n'a rien changé, mais j'ai mieux identifié le pb
    (d'ailleurs j'avais mis un autre post pour ça
    http://www.developpez.net/forums/d67...n/#post3968307
    )

    je le rappelle ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for ($k = 0; $k<5; $k++)
    {
    	echo 'coucou ' . $k;
    	sleep(2);
    }
    si je mets 2 secondes, j'attends 2x5 =10 secondes et j'ai mon affichage d'un seul coup, ce qui est normal vu l'explication sur le serveur

    si je mets 5 secondes, j'ai un erreur
    L'URL demandée n'a pu être chargée ... Réponse de taille nulle
    je suppose qu'il y a un timeout .... mais normalement 20 secondes, ça doit passer ...

    MAIS mon problème vient du fait que dans le fichier access_log d'apache il y a QUINZE FOIS la requete GET
    donc il me demande 15 fois la page
    POURQUOI ????

    le pb, c'est que normalement j'ai pas un sleep mais la fonction mail (publipostage)
    je suppose qu'elle met du temps à se réaliser et donc j'ai 15 appels de la page et donc 15 mails pour chaque personnes (au lieu de 1)

    voyez-vous pourquoi il me redemande plusieurs fois la page ?
    Merci par avance

  5. #5
    Membre habitué Avatar de Couz02
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 232
    Points : 182
    Points
    182
    Par défaut
    je suppose qu'il y a un timeout .... mais normalement 20 secondes, ça doit passer ...
    Oui il y a un timeout généralement de 30 secondes.

    Sinon je ne vois pas.
    N'oubliez pas que
    Msdn

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    Bonjour et merci à tous pour vos contributions

    le pb est résolu

    en fait, il y 2 serveurs apache l'un derrière l'autre
    le mien etant le 2nd

    sur le 1er, il y avait ds le fichier de config d'apache la variable Timeout réglé sur 10 (secondes)
    le passage à 30 secondes à résolu mon pb ...

    je suppose que le 1er apache envoyé une requete au 2nd apache
    comme la demande prenait plus de temps que les 10 secondes
    le 1er apache renvoyez la demande (et je ne comprends pas pourquoi, il relance la demande ....)
    ceci 11 fois de suite (je ne sais pas pourquoi 11 fois ...)

    Merci

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 26/06/2008, 10h10
  2. [Mail] Envoi de données d'un formulaire par e-mail
    Par gorgoroth dans le forum Langage
    Réponses: 2
    Dernier message: 22/11/2007, 10h53
  3. Réponses: 3
    Dernier message: 10/06/2007, 15h53
  4. [Mail] Envoi du contenu d'une pièce jointe par mail
    Par nonhosonno dans le forum Langage
    Réponses: 2
    Dernier message: 28/02/2007, 13h42
  5. [Mail] Envoi de mail en Plain Text
    Par Boeing dans le forum Langage
    Réponses: 4
    Dernier message: 06/09/2005, 18h07

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