Fonction mail php en boucle et timeout

olivier -  
 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.
A voir également:

2 réponses

arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Mais bien sûr :)

Le spam ça te dit quelque chose?
0
olivier
 
Il ne s'agit pas de spam, il s'agit de clients abonnés à qui on envoie la documentation 2009.

Merci pour votre réponse déobligeante, mais elle ne fait pas avancer le chmil blik.

Olivier.
0
olivier > olivier
 
Désolé de faire un up sur ce post,
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.
0
Ben > olivier
 
Bonjour, je suis le webmaster du site www.rapide-rencontre.com et j'ai exactement le meme probleme que vous. En fait moi j'ai environ 7000emails à envoyer, et ça plante au bout de 300... chez quel hebergeur etes vous moi c'est www.1and1.fr et vous ? qu'est-ce que le timeout ?
0
eMizZ
 
Normal, utiliser l'ajax pour envoyer vos mails !
0
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
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.
0
olivier
 
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.
0
sniper > olivier
 
Autre chose, la librairie libmail.php est très bonne. Ainsi que l'extension que je pourrais te filer.
pourrais tu m'en dire plus s'il te plais sur libmail.php
et moi je suis chez 1and1.fr pour le timeout il faudra que je les appeles ?
Merci
@+
0