probleme avec boucle While et fonction php mail()

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