Système d'alerte/notification par email

Xtense
Invité n'ayant pas de compte PHPfrance

21 oct. 2009, 14:36

Hey tous,

J'aimerais savoir si quelqu'un connaît un bon tutoriel permettant de mettre en place un système de notification/alerte par email.
Dans le cadre d'un site communautaire spécifique, l'idée est de prévenir les inscrits lorsqu'une nouvelle publication est ajoutée sur le site, etc. (type notifications Facebook en gros)

Je vois bien comment envoyer un mail, et même plusieurs. J'ai déjà mis en place sur un autre site un système d'envoi d'emailing avec génération et gestion des newsletters et gestion des contacts.

Bref, mon problème est que sur ce coup, je ne sais pas vraiment à quel endroit placer le script qui va envoyer les emails.
Actuellement en test, ce script est placé dans un include en haut du header, donc pour chaque page.
Le principe : nouvelle publication postée par un utilisateur > ajout de ce nouvel enregistrement dans une table "alertes" > script qui vérifie qu'il y a qq chose à envoyer dans la table "alertes" et qui l'envoie à tous les inscrits le cas échéant

Mon problème est qu'avec ce principe le chargement de la page est très long parce que la toute première tâche est d'envoyer des milliers de mails...
Je me suis bien dit que je pouvais tenter de mettre ce script en fin de page, mais je ne suis pas sûr que ce soit LA solution. Parce que le souci, quelque soit l'endroit où je place le script c'est qu'à un moment ou à un autre il y aura toujours des milliers de mails à envoyer et que ça va se ressentir...

Quelqu'un a une idée ou un bon lien ?
Merci !

Eléphanteau du PHP | 27 Messages

21 oct. 2009, 17:22

Hello Xtense,

J'ai deux idées à te proposer de but en blanc :

Première idée : Si tu utilises le champ CC (ou éventuellement CCI pour faire plus propre...) tu as beaucoup moins de mails à envoyer... donc tu n'auras pas la durée d'envoi de (exemple) 1000 mails mais celle de 1000 divisé par le nombre max de personne que tu arrives à coller simultanément dans ton champ CCI ! (quelqun peut confirmer svp ?)

Deuxième idée : Externalise l'envoi des mails dans un cron, de cette manière le temps de réponse de ta page Web ne sera pas du tout impacté par l'envoi des mails. Puisque tu stoques déjà les notifications à envoyer dans une BDD ça m'a l'air relativement facile à mettre en place !

La première idée te garanti l'envoi des notifications dès que le nouvel article est ajouté mais induit nécessairement un petit délai dans ta page web.
La deuxième idée te garanti zéro délai dans ta page web si tu acceptes que les notifications soient envoyées en différé (à toi de régler la periode de ton cron pour avoir un différé acceptable à ton goût).

Est-ce que ça te convient ?

Invité
Invité n'ayant pas de compte PHPfrance

21 oct. 2009, 17:40

Intéressant, merci !

Je ne connaissais pas du tout le principe du cron, je vais me renseigner là-dessus, car a priori c'est cette deuxième solution qui me semble parfaitement coller à ce que je cherche !

Merci encore

Eléphanteau du PHP | 27 Messages

21 oct. 2009, 18:19

Si tu est plus versé dans le crosoft, le cron c'est le pendant des tâches planifiées de windows.

Si tu est sur unix-like, ce sera probablement plus simple vu que tu peux appeler du php depuis le cron si je ne m'abuse, donc quasiment pas de modifs par rapport à ce que tu fais déja !

Si tu est sur windows, il va probablement falloir que tu trouves un interpretteur php en lignes de commande... ou que tu réécrives ton script en vbs ou autre joyeusetés interprettés nativement par l'os sus-cité.

Amuses toi bien :wink: