Fonction mail php en boucle et timeout
olivier
-
eMizZ -
eMizZ -
Bonjour,
Je souhaite faire une boucle sur la fonction mail de php pour envoyer 2000 emails (en toute légalité).
J'envoie des pièces jointes avec mon mail, donc je risque de rencontrer un problème de timeout.
J'ai la possibilité via mon hébergeur de mettre le timeout à une heure une fois par mois. Je pense l'utiliser.
Mais la question est la suivante. Comment savoir où j'en suis dans l'exécution de ma boucle sans alourdir ma boucle ?
J'ai bien pensé à incrémenter un fichier de la dernière adresse traitée, comme ça si ça plante je sais où reprendre, mais c'est un peu barbare et ça va bien alourdir ma boucle.
Des idées ?
Merci beaucoup.
Je souhaite faire une boucle sur la fonction mail de php pour envoyer 2000 emails (en toute légalité).
J'envoie des pièces jointes avec mon mail, donc je risque de rencontrer un problème de timeout.
J'ai la possibilité via mon hébergeur de mettre le timeout à une heure une fois par mois. Je pense l'utiliser.
Mais la question est la suivante. Comment savoir où j'en suis dans l'exécution de ma boucle sans alourdir ma boucle ?
J'ai bien pensé à incrémenter un fichier de la dernière adresse traitée, comme ça si ça plante je sais où reprendre, mais c'est un peu barbare et ça va bien alourdir ma boucle.
Des idées ?
Merci beaucoup.
A voir également:
- Php mail timeout
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Créer une adresse mail hotmail - Guide
- Comment télécharger un mail - Guide
- Cegetel mail ✓ - Forum Mail
2 réponses
Le timeout, c'est lorsque on définit une limite de temps pour un traitement.
Exemple on lance un très gros traitement et on ne souhaite pas qu'il dépasse une certaine heure, ou alors on est sûr par exemple qu'il ne dépassera pas 4 h, sinon c'est qu'il est tombé en bouclage et qu'il ne sert à rien de le continuer. Dans ce cas on fixe un timeout pour dire qu'au delà de cette valeur on ne poursuit pas le traitement ou la requête.
Autre exemple courant, la connexion à un serveur distant. Si au bout de mettons 10 sec la connexion n'est pas parvenue à s'établir, alors on considère qu'il y a timeout, c'est à dire que le temps prévu est dépassé et qu'on ne poursuit pas la demande.
C'est sans doute ça qui limite votre envoi à 300 mails, puisque il me semble que dans php il y a un champ de configuration définissant justement la valeur de timeout d'une commande.
Exemple on lance un très gros traitement et on ne souhaite pas qu'il dépasse une certaine heure, ou alors on est sûr par exemple qu'il ne dépassera pas 4 h, sinon c'est qu'il est tombé en bouclage et qu'il ne sert à rien de le continuer. Dans ce cas on fixe un timeout pour dire qu'au delà de cette valeur on ne poursuit pas le traitement ou la requête.
Autre exemple courant, la connexion à un serveur distant. Si au bout de mettons 10 sec la connexion n'est pas parvenue à s'établir, alors on considère qu'il y a timeout, c'est à dire que le temps prévu est dépassé et qu'on ne poursuit pas la demande.
C'est sans doute ça qui limite votre envoi à 300 mails, puisque il me semble que dans php il y a un champ de configuration définissant justement la valeur de timeout d'une commande.
Bonjour,
La plupart des hébergeurs web ont des serveurs mutuels. C'est à dire que différents sites web se partagent le même serveur.
Pour éviter qu'un client ne lance un script qui utilise beaucoup de ressources serveur au dépent des autres clients, l'hébergeur ne donne pas la possibilité aux scripts de dépasser une certaine limite de temps : le timeout.
Pour info, Je suis chez Infomaniak, et il y a la possibilité de passer de 30 secondes à 5 minutes sur demande, ce qui m'a permis d'envoyer mes 2000 mail.
Pour savoir combien de temps ton script met a envoyer un mail, je te conseil d'inclure dans ton script un petit traceur. J'ai choisi d'écrire dans un fichier statut.txt la ligne du client ou il en était pour savoir où j'en était au cas ou ca plante.
Tu peux parexemple à côté de la ligne client renseigner ou tu en est au niveau du temps d'execution de la requete.
Tu fais un test en t'envoyant disons 20 fois l'email, et ensuite tu fait une moyenne que tu multiplie par 7000 pour avoir une idée du temps nécessaire.
Autre option : tu découpe ta requete en traitement disons de 150 clients, une fois la requete effectuée elle te balance sur une autre page qui te demande par exemple "voulez vous passer aux 150 clients suivant" et tu recommence la requête avec les 150 clients pour lesquels le timeout s'est remis à zero...
Il ya a pas mal d'autre solutions.
Attention, pour éviter d'être considérer comme un spammeur, bien penser à envoyer l'adresse de ton domaine directement. Par ex si c'est mail@machin.com, executer sur le serveur machin.com le script est une très bo,nne idée.
Autre chose, la librairie libmail.php est très bonne. Ainsi que l'extension que je pourrais te filer.
A bientôt.
La plupart des hébergeurs web ont des serveurs mutuels. C'est à dire que différents sites web se partagent le même serveur.
Pour éviter qu'un client ne lance un script qui utilise beaucoup de ressources serveur au dépent des autres clients, l'hébergeur ne donne pas la possibilité aux scripts de dépasser une certaine limite de temps : le timeout.
Pour info, Je suis chez Infomaniak, et il y a la possibilité de passer de 30 secondes à 5 minutes sur demande, ce qui m'a permis d'envoyer mes 2000 mail.
Pour savoir combien de temps ton script met a envoyer un mail, je te conseil d'inclure dans ton script un petit traceur. J'ai choisi d'écrire dans un fichier statut.txt la ligne du client ou il en était pour savoir où j'en était au cas ou ca plante.
Tu peux parexemple à côté de la ligne client renseigner ou tu en est au niveau du temps d'execution de la requete.
Tu fais un test en t'envoyant disons 20 fois l'email, et ensuite tu fait une moyenne que tu multiplie par 7000 pour avoir une idée du temps nécessaire.
Autre option : tu découpe ta requete en traitement disons de 150 clients, une fois la requete effectuée elle te balance sur une autre page qui te demande par exemple "voulez vous passer aux 150 clients suivant" et tu recommence la requête avec les 150 clients pour lesquels le timeout s'est remis à zero...
Il ya a pas mal d'autre solutions.
Attention, pour éviter d'être considérer comme un spammeur, bien penser à envoyer l'adresse de ton domaine directement. Par ex si c'est mail@machin.com, executer sur le serveur machin.com le script est une très bo,nne idée.
Autre chose, la librairie libmail.php est très bonne. Ainsi que l'extension que je pourrais te filer.
A bientôt.
Merci pour votre réponse déobligeante, mais elle ne fait pas avancer le chmil blik.
Olivier.
mais j'aimerai bien un coup de pouce.
Encore une fois, je souhaite envoyer le catalogue 2009 à mes clients qui en ont fait la demande.
Mais je ne sais pas trop comment contourner le problème de timeout, ou sinon d'avoir un pointeur qui me renseigne de la dernière adresse traitée pour relancer le script.
Bien à vous et merci de votre aide précieuse,
Olivier.