probleme avec boucle While et fonction php mail()

Kaliiii

WRInaute occasionnel
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 ?
 

Kaliiii

WRInaute occasionnel
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é
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
 

mahefarivony

WRInaute accro
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 occasionnel
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
Code:
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 occasionnel
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
 

Discussions similaires

Haut