envoi d'emails en masse et pause avec sleep ou usleep
17 messages • Page 1 sur 2 • 1, 2
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
envoi d'emails en masse et pause avec sleep ou usleep
Bonjour,
Je dois faire un emailing vers plus de 5000 adresses contenues dans une bdd.
Mon script d'envoi fonctionne car testé avec une dizaine d'adresse, mais avant de balancer la base complète, je ne sais pas si il est préféreble de séparer la base pour faire plusieurs paquets et envoyer par exemple par paquet de 200 ou bien envoyer le tout et mettre un simple sleep (2) dans ma boucle while pour faire une pause de 2 secondes entre chaque envoi de mail.
Qu'en pensez vous ?
personellement, je préfère la solution du sleep pour la facilité.
Je dois faire un emailing vers plus de 5000 adresses contenues dans une bdd.
Mon script d'envoi fonctionne car testé avec une dizaine d'adresse, mais avant de balancer la base complète, je ne sais pas si il est préféreble de séparer la base pour faire plusieurs paquets et envoyer par exemple par paquet de 200 ou bien envoyer le tout et mettre un simple sleep (2) dans ma boucle while pour faire une pause de 2 secondes entre chaque envoi de mail.
Qu'en pensez vous ?
personellement, je préfère la solution du sleep pour la facilité.
Salut,
Je pense pas que ce soit une bonne idée. Normalement, tu peux tout envoyer en paquet sans te soucier d'un problème.
Imagine que tu fasses un sleep de 2 secondes après chaque envoi et prenons en compte que pour envoyer un e-mail cela prenne que 0.001 secondes, voici un simple calcul :
((5000*2.001)/60)/60) = 2h, donc est-ce que ton script peut tourner 2 heurs sur ton hébergement ?
A+
Je pense pas que ce soit une bonne idée. Normalement, tu peux tout envoyer en paquet sans te soucier d'un problème.
Imagine que tu fasses un sleep de 2 secondes après chaque envoi et prenons en compte que pour envoyer un e-mail cela prenne que 0.001 secondes, voici un simple calcul :
((5000*2.001)/60)/60) = 2h, donc est-ce que ton script peut tourner 2 heurs sur ton hébergement ?
A+
donc est-ce que ton script peut tourner 2 heurs sur ton hébergement ?
C'est sur un dédié donc, j'imagine que c'est possible, mais cela risque peut etre de faire aboyer un chien de garde.
Bon, admettons que je laisse tomber la solutiin du sleep dans la boucle, comment puis-je séparer automatiquement la base en paquets ?
Je ne maitrise pas assez mysql pour être sur de mon coup, peut-être avez-vous des bouts de scripts tout fait pour ce genre de manip?
La question que je me pose c'est : pourquoi spliter ta base ? Ou est le problème d'envoyer le tout en paquet ?
Je ne sais pas, peut-être que je crains un probleme, par exemple en utilisant trop de ressource cpu, ou que sais-je.
C'est la première fois que j'ai à traiter ce genre de demande donc, je préfère m'appuyer sur des gens qui ont de l'expérience dans ce genre de manip.
actuellement je fait de manière simple :
- Code: Tout sélectionner
$req=mysql_query("SELECT email FROM liste");
$res=mysql_numrows($req);
$i=0;
while($i!=$res) {
$email=mysql_result($req,$i,"email");
mail($email,$_POST['sujet'],$_POST['news'],$headers);
$i++;
}
mysql_close();
?>
ça tourne bien pour une dizaine de mails mais est-ce que je peux lancer la même chose si la base contient 5000 adresses sans risque ?
Si tu veux laisser souffler le serveur de temps en temps, ce que tu peux faire c'est tous les 200 e-mails envoyé tu fais un sleep de 2-3 secondes.
Dans le cas de ton code tu devrais faire un $j = 0; avant le while et mettre une condition du genre :
N'oublie pas d'incrémenter le $j
A+
Dans le cas de ton code tu devrais faire un $j = 0; avant le while et mettre une condition du genre :
- Code: Tout sélectionner
if($j => 200){ sleep(2); $j = 0;}
N'oublie pas d'incrémenter le $j
A+
merci Sir Dipp pour ta suggestion, je teste
- Code: Tout sélectionner
<?
$req=mysql_query("SELECT email FROM liste");
$res=mysql_numrows($req);
$i=0;
$j=0;
while($i!=$res) {
if($j => 200){
sleep(2); $j = 0;}
$email=mysql_result($req,$i,"email");
mail($email,$_POST['sujet'],$_POST['news'],$headers);
$i++;
$j++;
}
mysql_close();
?>
-

bproductiv - WRInaute accro

- Messages: 2853
- Inscription: Lun Déc 27, 2004 16:29
if($j => 200)
si J est supérieur ou égal a 200, ca tique pas là?? il commence à 0 et tu l'incrémente dans cette boucle alors ca risque pas de démarrer !
si J est supérieur ou égal a 200, ca tique pas là?? il commence à 0 et tu l'incrémente dans cette boucle alors ca risque pas de démarrer !
-

bproductiv - WRInaute accro

- Messages: 2853
- Inscription: Lun Déc 27, 2004 16:29
Oooops, méa culpa..pardon
-

webmasterlamogere - WRInaute accro

- Messages: 1874
- Inscription: Dim Déc 17, 2006 21:08
Je ferais un traitement qui envoi X mails avec l'option LIMIT dans le SELECT et qui met un flag "traité" dans la table des emails. Ensuite un petit cron qui se lance tous les X minutes.
-

mahefarivony - WRInaute accro

- Messages: 11405
- Inscription: Lun Oct 14, 2002 10:00
les sleep ont toujours généré des doublons (voire meme plus) chez moi
C'est webmasterlamogere qui a donné la meilleure solution...
Ah oui, a la question de savoir pourquoi pas tout envoyer d'un bloc ? C'est sans doute le meilleur moyen de se faire blacklister par les serveurs de mail
C'est webmasterlamogere qui a donné la meilleure solution...
Ah oui, a la question de savoir pourquoi pas tout envoyer d'un bloc ? C'est sans doute le meilleur moyen de se faire blacklister par les serveurs de mail
oui mahefarivony, je suis tomber au cours de mes recherches sur un topic que tu avais lancé à ce sujet.
C'est pour ça que j'hésitais sur la solution du sleep
La solution du cron m'inspirais déja mieux, mais n'ayant utilisé ce service jusque là, je crains de pinailler pendant des heures avant de faire fonctionner correctement le système.
C'est pour ça que j'hésitais sur la solution du sleep
La solution du cron m'inspirais déja mieux, mais n'ayant utilisé ce service jusque là, je crains de pinailler pendant des heures avant de faire fonctionner correctement le système.
17 messages • Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
Consultez la description détaillée des produits ou services de Google suivants : Google Dashboard Widgets for Mac, Google mail
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


le forum