probleme avec boucle While et fonction php mail()


Kaliiii
WRInaute impliqué
WRInaute impliqué
 
Messages: 603
Inscription: 2 Mar 2005

probleme avec boucle While et fonction php mail()

Message le Jeu Oct 25, 2007 12:42

Bonjour a tous !

Je rencontre un problème auquel je n'ai encore jamais trouvé de solution.

Lors d'un envoi de mail via un script php a un grand nombre d'adresse (4 000 environ), j'ai un gros bug qui envoie le mail en plusieurs exemplaires.

Ma requette en base ne comporte qu'une adresse par enregistrement et je fais un simple SELECT. Pas de doublons dans la base donc.

J'ai mis l'execution time du script a 1 an et je vais une pause d'une seconde entre chaque envoi.

Le script est lancé par un cronjob directement depuis le serveur.

Est-ce que quelqu'un a déja rencontré ce problème et y a trouvé une solution ? Est-ce un bug de php ?


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Jeu Oct 25, 2007 13:08

tu peux ajouter un DISTINCT pour être certain


Kaliiii
WRInaute impliqué
WRInaute impliqué
 
Messages: 603
Inscription: 2 Mar 2005

Message le Jeu Oct 25, 2007 13:16

je l'ai fait, mais ca n'a rien changé :/, je me demande si ce n'est pas un probleme lié a l'éxecution de la commande avec wget

bozoleclown
WRInaute impliqué
WRInaute impliqué
 
Messages: 893
Inscription: 24 Nov 2005

Message le Jeu Oct 25, 2007 14:19

t'es sure que ton script n'est pas executé plusieurs fois ?

et plutot que de mettre un wget dans ton cron, mets un /usr/bin/php c'est plus propre


Kaliiii
WRInaute impliqué
WRInaute impliqué
 
Messages: 603
Inscription: 2 Mar 2005

Message le Jeu Oct 25, 2007 14:23

je vais tester cette solution.

merci

bozoleclown
WRInaute impliqué
WRInaute impliqué
 
Messages: 893
Inscription: 24 Nov 2005

Message le Jeu Oct 25, 2007 14:45

Tu peux copier/coller la ligne de la crontab ici ?


mahefarivony
WRInaute accro
WRInaute accro
 
Messages: 11405
Inscription: 14 Oct 2002

Message le Jeu Oct 25, 2007 14:49

j'ai déja rencontré le probleme : c'est la pause d'une seconde qui fait tout foirer.

La pause faut la faire sur le cron : appel du script toute les 5 minutes par exemple et envoi de 100 mails pendant ces 5 mn. Et taggage des mails qui ont été envoyé.

Bonne chance


Kaliiii
WRInaute impliqué
WRInaute impliqué
 
Messages: 603
Inscription: 2 Mar 2005

Message le Jeu Oct 25, 2007 18:16

hum je pense que dans ce cas, je vais opter pour une option qui vérifie si le mail n'a pas été deja envoyé. Je vais y réfléchir.

Merci


mahefarivony
WRInaute accro
WRInaute accro
 
Messages: 11405
Inscription: 14 Oct 2002

Message le Jeu Oct 25, 2007 18:53

Code: Tout sélectionner
select id,email from newsletter where sentemail=0 limit 30
foreach email {
mail(email ..)
update newsletter set sentemail=1 where id=id
}


t'appelles ça toutes les x minutes avec ton crontab


Kaliiii
WRInaute impliqué
WRInaute impliqué
 
Messages: 603
Inscription: 2 Mar 2005

Message le Jeu Oct 25, 2007 19:28

Tu supposes d'implémenter a chaque fois en base le dernier mail envoyé pour reprendre au suivant ?

Pas bête du tout, je pense que je vais opter pour ca

Merci pour toutes ces réponses, je pense que ca pourra aussi servir a d'autres


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités