Enigme pour spécialiste : Très très bizarre.

Enigme pour spécialiste : Très très bizarre. - PHP - Programmation

Marsh Posté le 15-10-2008 à 13:59:17    

Bonjour,
 
Je suis en train d'effectuer l'envoi d'une newsletter.
 
Voici comment ça se présente:
 

Code :
  1. $req="SELECT email FROM newsletter ORDER BY email ASC";
  2. $rst=mysql_query($req,$connexion);
  3. $compteur=1;
  4. while($email=mysql_fetch_object($rst))
  5. {
  6. if(mail($email->email,'AfterEnd: Annonce',$text,$From))
  7. {
  8.  if( ($compteur % 100) == 0)
  9.  {
  10.   $req="UPDATE data_pub SET email='$email->email', compteur='$compteur'";
  11.   mysql_query($req,$connexion);
  12.  }
  13.  echo"$compteur - $email->email<br>";
  14.  $compteur++;
  15. }
  16. }


 
En gros, j'envoi un email et tous les 100 emails, je mets à jour l'enregistrement unique de ma table data_pub en indiquant l'email ou j'en suis et la valeur du compteur.
 
Le résultat est extrêmement étonnant:
Au moment ou j'écris, la dernière ligne affiché dans mon fichier est:
12422 - uneadresseemail@hotmail.com
 
Et dans ma base de données, je peux lire (après un refresh de la table bien sûr !): EMAIL : emailzz@hotmail.fr COMPTEUR: 4200
Effectivement, quand je remonte dans le fichier, je vois que pour le compteur 4200 on a bien email2@hotmail.fr.
 
La grande question est la suivante:
Pourquoi je n'ai pas EMAIL: emailyy@hotmail.fr COMPTEUR: 12400 dans ma base de données ?
 
Du coup je me demande si mes emails sont bien partis...je pense que oui mais bon...c'est bizarre.
 
Merci d'avance.
 
UPDATE: Le script semble bloqué sur le 12422 depuis 5 bonnes minutes alors que j'ai 60 000 emails à envoyer...


Message édité par smilm le 15-10-2008 à 14:00:52
Reply

Marsh Posté le 15-10-2008 à 13:59:17   

Reply

Marsh Posté le 15-10-2008 à 14:02:17    

regle n°1 quand on fait un publipostage, on s'ajoute dans la liste des detinataires
 
est e que tu es sur d'avoir un seul envoi a la fois ? est ce qu'il n'y à pas d'erreur SQL ( genre avec des email malformés ) ?


---------------

Reply

Marsh Posté le 15-10-2008 à 14:05:15    

Déjà si tu appelles mail() pour chaque adresse, ça va pas trop aller, mail() ouvrant un socket à chaque fois. Ca flingue totalement le serveur, la fonction mail n'est absolument pas faite pour ça [:sadnoir]


Message édité par FlorentG le 15-10-2008 à 14:05:24
Reply

Marsh Posté le 15-10-2008 à 14:06:06    

je conseille tres fortement cette classe pour les envois de mail http://www.swiftmailer.org/


---------------

Reply

Marsh Posté le 15-10-2008 à 14:06:17    

flo850 a écrit :

regle n°1 quand on fait un publipostage, on s'ajoute dans la liste des detinataires
 
est e que tu es sur d'avoir un seul envoi a la fois ? est ce qu'il n'y à pas d'erreur SQL ( genre avec des email malformés ) ?


Je suis dans la liste des destinataire.
 
Il est possible que j'ai des emails erronés.
Comment se comporte mon script si c'est le cas?
 
Admettons que j'arrive sur un email erroné.
Le compteur n'augmente pas sur cette email donc il passe a l'email suivant, et si compteur modulo 100 = 0 sur l'email suivant je devrais avoir un update dans ma bdd de fait.
Ce n'est visiblement pas le cas.

Reply

Marsh Posté le 15-10-2008 à 14:07:06    

tout depend de la gueule du mail  
 
quand tu fasi tourner el script sans envoyer de mail , ca fonctionne bien ?


---------------

Reply

Marsh Posté le 15-10-2008 à 14:13:54    

flo850 a écrit :

tout depend de la gueule du mail  
 
quand tu fasi tourner el script sans envoyer de mail , ca fonctionne bien ?


Je viens de faire le test.
Le script affiche bien le dernier mail.
L'enregistrement en bdd affiche la centaine correspondant au compteur du dernier mail.
 
Donc le script fonctionne bien sans envoi de mail.

Reply

Marsh Posté le 15-10-2008 à 21:21:49    

D'autres avis ???

Reply

Marsh Posté le 16-10-2008 à 09:58:35    

tu n'as rien dans les log du serveur ?  
tu as essayé avec la classe swiftmailer ?  
 
parceque là , tout ce que je peux te dire , c'est que chez moi ça marche


---------------

Reply

Sujets relatifs:

Leave a Replay

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