Temporisation pour emailing

Raymond Domenech
Invité n'ayant pas de compte PHPfrance

07 juin 2007, 14:58

Bonjour à tout le monde,
j'ai un script php qui risque d'être assez long à s'éxécuter complètement puisque, en 2 mots, ce scripts parcours un bdd, selectionne des adresse email (à peu près 2000), et envoie un mail à chacune de ces adresses. Je me demande (et je vous pose la question) s'il n'est pas risqué de laisser s'éxécuter un script aussi long, à savoir, ne va t-il pas planter à un moment?
Aussi, je me demandais s'il existait un moyen d'éxécuter ce script "petit à petit", par paquets d'adresses, et de le faire stopper de dans en temps pour qu'il reprenne son souffle.
Qu'en pensez vous??
Merci d'avance pour vos suggestions et conseils.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 juin 2007, 15:11

C'est en effet une très bonne chose, nottament pour ne pas saturer le serveur de messagerie :)

Tu peux avec set_time_limit() définir le temps d'exécution d'un script (et lui laisser ainsi plus que les 30 sec par défaut du php.ini

Quant aux pauses entre paquets de mail, il te suffit de faire appel à sleep() tous les X messages pour laisser un peu de temps au serveur pour traiter un par un chaque paquet de mails envoyés :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 451 Messages

08 juin 2007, 06:52

Bonjour,

Pour le traitement par paquets, je me souviens avoir contourné les problèmes de time limit en utilisant le meta tag html refresh (avec un paramètre dans l'url indiquant où j'en suis).
Ca doit aussi être possible avec header de php...
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphant du PHP | 124 Messages

08 juin 2007, 07:20

Avec la fonction mail() , t'en a pour un paquet de temps.
Y a moyen de faire plus vite en utilisant le packer PEAR qui va bien.

Ou de faire directement toi même l'envoi par connection SMTP.
Ça t'évitera des trucs trop long.