execution d'un script de news par paquet pour ne pas depasser limite de temps

Mammouth du PHP | 843 Messages

17 déc. 2007, 11:37

salut la compagnie :)

Je souhaite faire un envoi de email par 50 email pour une newsletter... Chez mon hebergeur, j'ai un max_execution_time à 90 secondes dans mon php.ini et j'aimerai savoir comment faire pour executer mon script plusieur fois jusqu'a avoir fait le tour de tout mes membre?

si quelqu'un à une idée sur le comment faire?
merci d'avance ;)

PS. je vais voir pour coller un bench marck sur mes envoi de mail afin de determiner une limite de mail prudament estimer ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

d0m
Mammouth du PHP | 1141 Messages

17 déc. 2007, 11:44

peut être recharger la même page en passant des compteurs.
La page s'exécute, envoie les mails et ceci fait se recharge elle même.
Un test sur les compteurs permettra de savoir quand arrêter.

Mammouth du PHP | 843 Messages

17 déc. 2007, 11:50

du genre via une meta html avec test sur les paramètre GET de page ???

Code : Tout sélectionner

<meta http-equiv="refresh" content="0; URL=./news.php?compteur=1&compteur_max=100" />
mais comment s'assurer que l'admin ne va pas faire autre chose sans comprendre que le script s'exectute ???
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 505 Messages

17 déc. 2007, 12:29


Eléphant du PHP | 124 Messages

18 déc. 2007, 04:16

Ce que j'avais programmé, c'était que quand tu appuyais sur le bouton "ENVOIE", ça envoyé chaque mail formaté dans une base de données.
Et, un CRON qui s'éxecutait toutes les 10 minutes passé et parser la DB. Si un envoi était incorrect, il patientait un bon moment.

De mon expérience, en CRON, ça va 100 fois plus vite.
Si tu as beaucoup d'usagers, au bout du 100 ième, tu as un très gros retour d'erreurs du à la queue.
Vu que mail() c'est super super lent, il ouvre un port, envoie et le ferme ensuite pour chaque mail.

Il y a une solution dans PEAR pour les gros envoies aussi.
Mais la solution DB c'était assez sûr. Dans la mesure ou avant l'envoi on pouvait regarder si quelque chose va aller de travers.

Mammouth du PHP | 843 Messages

19 déc. 2007, 12:44

de retour et toujour pas d'idée mirobolante :?

j'aimerai savoir comme je peut verifier si le mail peut partir et aussi verifier comment s'assurer qu'il est bien arriver à destination ?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 déc. 2007, 12:57

S'assurer qu'il est parti, il suffit de récupérer la valeur de retour de la fonction mail().

Tu ne peux vraiment t'assurer que le mail est bien reçu. Si tu veux un exemple, il est très rare que je confirme un accusé de réception, alors comment veut tu t'assurer qu'un mail est arrivé s'il est possible au destinataire de ne pas t'informer qu'il est arrivé ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 déc. 2007, 13:07

Vérifier qu'il est lu "en mode HTML" avec l'image générée par un script php qui en profite pour récupérer un certain nombre d'informations sur le membre ayant reçu et lu cet email.

Dans le genre (contenu du mail)
<img src="http...script.php?id_membre=$variable" >
Mais ce n'est pas sur à 100% (loin de la)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 843 Messages

19 déc. 2007, 21:32

j'aimerai bien executer mon script send_newsletter.php sans pour autant que l'utilisateur soit obliger d'attendre la fin d'envoi de mail massif :?

en gros en executant le dit script d'envoi de mail via un ligne de commande appeler dans mon script newsletter.php qui me lancerai le send_newsletter.php et me permettrai de finaliser ma procedure d'envoi de saisi de la news et de permetre à l'utilisateur de poursuivre son travail coté admin...

je n'ai malheureusement pas moyen de passer par des crons chez mon hebergeur donc les crons sont à mettre de coté... :cry:

si a part l'execution de script via ligne de commande il existe aussi une autre methode pour executer ce script de façon masquer sans pour autant figer l'utilisateur durant la sequence d'envoi de mail, merci de m'orienter ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

ViPHP
ViPHP | 2287 Messages

20 déc. 2007, 01:42

Vérifier qu'il est lu "en mode HTML" avec l'image générée par un script php qui en profite pour récupérer un certain nombre d'informations sur le membre ayant reçu et lu cet email.

Dans le genre (contenu du mail)
<img src="http...script.php?id_membre=$variable" >
Mais ce n'est pas sur à 100% (loin de la)
C'est même très loin des 100%. Thunderbird, la plupart des webmails, et sans doute d'autres clients de messagerie "modernes" sont heureusement protégés par défaut contre ce genre de pratiques (et c'est tant mieux pour la vie privée des utilisateurs... :D ). Le meilleur moyen, et le moins sournois, reste encore l'accusé de réception, qui veut bien dire ce qu'il veut dire et que chacun est libre d'ignorer ou non (soit dit en passant, moi aussi, je ne les envoie pas - à plus forte raison dans le cas d'un mailing en masse).
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 843 Messages

20 déc. 2007, 12:44

sinon personne n'a d'idée à me soumettre pour l'execution en masquer de l'envoi massif de mail de la news ? (cf mon precedent post ;) )
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 déc. 2007, 13:02

Webcron ou ajax :-k

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute