Faire des "pauses" dans un script php
9 messages
• Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
- Zim'
- WRInaute impliqué

- Messages: 804
- Inscription: 27 Avr 2006
Faire des "pauses" dans un script php
Salut tout le monde,
Je sais qu'on en avais parlé sur le chat un soir, mais je sais plus du tout
Je suis en php4, et je voudrais faire un truc qui envoie un mail.
Pour le moment, j'aimerai que ça gere au moins l'envoie de 2500 mails à la suite max.
Vous pensez quoi? Si je boucle à la barbare sur les mails, ça passe?
Sinon, et par sécurité, j'aimerai bien les envoyer par lot de 250/500 sans qu'il y ai besoin d'intervention ni rien, donc faire des pause durant l'execution du script php?
Ensuite, si vous pouvez m'indiquer la méthode pour allonger le timeout d'un script php, ce serais cool.
Donc voila, merci d'avance pour ceux qui saurons m'aider
PS: autre question,
Si dans un script j'update ma bdd à unchamp=1, que je fais des opération, et que apres je fais un update a unchamp=1 (a chaque fois sur tous les enregistrements), entre les deux requetes SQL, j'ai bien les bonnes valeur dans ma bdd? (je suppose que oui mais bon)
Je sais qu'on en avais parlé sur le chat un soir, mais je sais plus du tout
Je suis en php4, et je voudrais faire un truc qui envoie un mail.
Pour le moment, j'aimerai que ça gere au moins l'envoie de 2500 mails à la suite max.
Vous pensez quoi? Si je boucle à la barbare sur les mails, ça passe?
Sinon, et par sécurité, j'aimerai bien les envoyer par lot de 250/500 sans qu'il y ai besoin d'intervention ni rien, donc faire des pause durant l'execution du script php?
Ensuite, si vous pouvez m'indiquer la méthode pour allonger le timeout d'un script php, ce serais cool.
Donc voila, merci d'avance pour ceux qui saurons m'aider
PS: autre question,
Si dans un script j'update ma bdd à unchamp=1, que je fais des opération, et que apres je fais un update a unchamp=1 (a chaque fois sur tous les enregistrements), entre les deux requetes SQL, j'ai bien les bonnes valeur dans ma bdd? (je suppose que oui mais bon)
-

e-kiwi - Modérateur

- Messages: 15617
- Inscription: 23 Déc 2003
http://fr.php.net/sleep ?
moi je boucle à la barbare sur 2500 mails, ca passe sans problème
mais je sais pas sur quel serveur tu es. mutualisé ?
moi je boucle à la barbare sur 2500 mails, ca passe sans problème
-

Leonick - WRInaute accro

- Messages: 19592
- Inscription: 8 Aoû 2004
Re: Faire des "pauses" dans un script php
Zim' a écrit:Ensuite, si vous pouvez m'indiquer la méthode pour allonger le timeout d'un script php, ce serais cool.
- Code: Tout sélectionner
set_time_limit(60000); //fixe un delai maximum d'execution de 600 secondes soit 10 minutes.
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
Tu as un dédié ?
si c'est le cas un petit cron qui lance un script php, qui lui même fait:
- récupération de toute la liste de mail + info perso.
- une boucle qui traite message par message
- dans la boucle pour chaque mail: un set_time_limit(20);
(20 seconde pour traiter chaque mail..largement suffisant)
- tous les 100 mails traités une pause d'une minute par exemple (sleep(60);)
- ne pas oublier devant le sleep(60) un set_time_limit(80);
Ainsi 3000 mails seront traité en 30 minutes (~) sans surcharge serveur.
Après tu peu adapter le tout (temps d'attente,nombre de mail envoyé par packet, etc..)
si c'est le cas un petit cron qui lance un script php, qui lui même fait:
- récupération de toute la liste de mail + info perso.
- une boucle qui traite message par message
- dans la boucle pour chaque mail: un set_time_limit(20);
(20 seconde pour traiter chaque mail..largement suffisant)
- tous les 100 mails traités une pause d'une minute par exemple (sleep(60);)
- ne pas oublier devant le sleep(60) un set_time_limit(80);
Ainsi 3000 mails seront traité en 30 minutes (~) sans surcharge serveur.
Après tu peu adapter le tout (temps d'attente,nombre de mail envoyé par packet, etc..)
-

ysimon - WRInaute discret

- Messages: 153
- Inscription: 24 Fév 2004
thierry8 a écrit:Tu as un dédié ?
euh, sur un dédié chez ovh, je crachais 120 000 mails à l'heure
y'a pas de soucis, pourquoi faire une pause pour 2000 mails .. tu balances le tout ... avec un long script php, mais en local (tu mets un smtp local, genre postfix) ... et apres, c'est postfixqui mettra du tempsà tout envoyer
- chris2000
- Nouveau WRInaute

- Messages: 5
- Inscription: 13 Nov 2009
Re: Faire des "pauses" dans un script php
bonjour, j'ai le meme probleme
j'apelle à partir d'une boucle des mails d'une base de donnée, que j'envoie, seulement j'ai un fichier de pres de 7000 mails,
j'ai serveur smtp privé,
j'ai ce code
donc di j'ai bien compris la reponse de thierry8
il faudrait que je rajoute:
je ne suis pas tres exellent en requete sql, comment faire pour envoyer tous les 100 mails traités une pause d'une minute ???
merci d'avance pour votre aide
j'apelle à partir d'une boucle des mails d'une base de donnée, que j'envoie, seulement j'ai un fichier de pres de 7000 mails,
j'ai serveur smtp privé,
j'ai ce code
- Code: Tout sélectionner
for ($i=1;$i<$nb;$i++){
$o=mysql_fetch_object($result_mail);
$recipient=$o->news_mail;
if (isset($_POST['select'.$i.''] )){ //si la checkbox du mail est selectionnée
$mail =& Mail::factory("smtp", $smtp_params);
$result = $mail->send($recipient, $headers, $body); //envoi du mail
}
}
donc di j'ai bien compris la reponse de thierry8
il faudrait que je rajoute:
- Code: Tout sélectionner
for ($i=1;$i<$nb;$i++){
$o=mysql_fetch_object($result_mail);
$recipient=$o->news_mail;
if (isset($_POST['select'.$i.''] )){ //si la checkbox du mail est selectionnée
$mail =& Mail::factory("smtp", $smtp_params);
$result = $mail->send($recipient, $headers, $body); //envoi du mail
set_time_limit(20);
}
}
je ne suis pas tres exellent en requete sql, comment faire pour envoyer tous les 100 mails traités une pause d'une minute ???
merci d'avance pour votre aide
- sky
- WRInaute occasionnel

- Messages: 260
- Inscription: 3 Mar 2003
Re: Faire des "pauses" dans un script php
Bonjour
Voici un exemple de comment on pourrais faire une pause tous les 100 mails envoyés.
Sky
Voici un exemple de comment on pourrais faire une pause tous les 100 mails envoyés.
- Code: Tout sélectionner
// on cree et affiche le site
$Tpl->createTemplate();
$nbr_mail_pause = 100; // on fais une pase après 100 mails
$i = 0; // $i sera le compteur
for ($i=1;$i<$nb;$i++)
{
$o = mysql_fetch_object($result_mail);
$recipient=$o->news_mail;
if (isset($_POST['select'.$i.''] ))
{
$mail =& Mail::factory("smtp", $smtp_params);
$result = $mail->send($recipient, $headers, $body); //envoi du mail
$i++;
if($i == $nbr_mail_pause)
{
// si $i = 100, on reinitialise $i à 0 et on fais la pause
$i = 0;
set_time_limit(20);
}
}
}
Sky
- sky
- WRInaute occasionnel

- Messages: 260
- Inscription: 3 Mar 2003
Re: Faire des "pauses" dans un script php
Oui, mais c'est plus dure à comprendre.
Ca fonctionne comme ceci et c'est plus facile à lire
Si cette personne ne comprend pas comment insérer une pause tous les 100 itérations, je pense qu'on doit mettre un code le plus explicite possible pour que cette personne puisse comprendre la logique avant de commencer à optimiser ou raccourcir le code qui est en général une étape secondaire.
Sinon, explication sur le comment du pourquoi du modulo en PHP : http://php.net/manual/fr/language.operators.arithmetic.php
Sky
Ca fonctionne comme ceci et c'est plus facile à lire
Si cette personne ne comprend pas comment insérer une pause tous les 100 itérations, je pense qu'on doit mettre un code le plus explicite possible pour que cette personne puisse comprendre la logique avant de commencer à optimiser ou raccourcir le code qui est en général une étape secondaire.
Sinon, explication sur le comment du pourquoi du modulo en PHP : http://php.net/manual/fr/language.operators.arithmetic.php
Sky
9 messages
• Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Je cherche un script de "news" en PHP
- Faire un script PHP/SQL...
- Script en php ou perl pour faire un whois ?
- Script PHP + Javascript pour faire du cryptage.
- script pour faire des miniatures d'images en php
- Faire connaître un script php/MySQL Open Source
- Comment faire pour réécrire des url générées par script php
- Comment lancer un script php à parrtir d'un autre script php ?
- Faire fermer un ancien "lycos multimania", comment faire ?
- script type="text/javascript" src="/swfobject
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
