par
stopher » 15 mai 2009, 12:16
Un exemple ?
Et bien , je trouve pourtant que la doc set_time_limit() donne pas mal d'explications là dessus ..
Ce que tu peux faire ,
dans chaque boucle , tu estime que le temps de l'envoie de d'un mail ne peut être supérieur à 20 secondes , tu mets :
while($resultat = mysql_fetch_array($result))
{
set_time_limit(20);
....
}
Ainsi , comme l'appel de cette fonction remet les compteurs à zéro , ton script ne se coupera pas , sauf si l'envoie d'un mail bloque plus de 20 secondes .
Tu aurais aussi trés bien pu mettre set_time_limit(0); au tout début de ton script , qui aurait eu l'effet de permettre à ton script de s'executer autant de temps qu'il le souhaite .. mais en cas de blocage , celà peut poser un souci .. je ne conseille vraiment pas cette méthode .
Note: si safe_mode est activé sur ton serveur , set_time_limit(); ne fonctionne pas !
Et comme l'a précisé
thehawk, tu peux aussi garder le time_limit par défaut ( qui est de 30 sec ) , mais de découper ton envoi de mails .. ( à toi de définir ta façon de faire ).
Exemple , tu as 500 mails à envoyer , tu lances l'action envoyer tel mail aux 500 adresses , et cette action se met sous forme de "workflow" , ces actions seront donc lancé en décalé dans le temps , via une tache cron par exemple .
Ce qui permet d'étaler la charge de ton serveur , et d'éviter les problèmes de timeout , un peut plus conséquent à mettre en place , mais une solution qui est fréquemment utilisé .
Bonne continuation ,
Ch.
Un exemple ?
Et bien , je trouve pourtant que la doc set_time_limit() donne pas mal d'explications là dessus ..
Ce que tu peux faire ,
dans chaque boucle , tu estime que le temps de l'envoie de d'un mail ne peut être supérieur à 20 secondes , tu mets :
[php]while($resultat = mysql_fetch_array($result))
{
set_time_limit(20);
....
}[/php]
Ainsi , comme l'appel de cette fonction remet les compteurs à zéro , ton script ne se coupera pas , sauf si l'envoie d'un mail bloque plus de 20 secondes .
Tu aurais aussi trés bien pu mettre set_time_limit(0); au tout début de ton script , qui aurait eu l'effet de permettre à ton script de s'executer autant de temps qu'il le souhaite .. mais en cas de blocage , celà peut poser un souci .. je ne conseille vraiment pas cette méthode .
[b]Note:[/b] si safe_mode est activé sur ton serveur , set_time_limit(); ne fonctionne pas !
Et comme l'a précisé [b]thehawk[/b], tu peux aussi garder le time_limit par défaut ( qui est de 30 sec ) , mais de découper ton envoi de mails .. ( à toi de définir ta façon de faire ).
Exemple , tu as 500 mails à envoyer , tu lances l'action envoyer tel mail aux 500 adresses , et cette action se met sous forme de "workflow" , ces actions seront donc lancé en décalé dans le temps , via une tache cron par exemple .
Ce qui permet d'étaler la charge de ton serveur , et d'éviter les problèmes de timeout , un peut plus conséquent à mettre en place , mais une solution qui est fréquemment utilisé .
Bonne continuation ,
Ch.