Question

J'ai un site immobilier qui a plusieurs catégories. Et je veux que les utilisateurs soient en mesure de souscrire par courrier électronique à une certaine liste des offres, ils peuvent être soit des offres d'une catégorie ... ou des offres à partir d'une liste de recherche.

Comment puis-je stocker ils sont la meilleure façon souscription dans une base MySQL ... et comment dois-je procéder et de faire la notification.

Le meilleur que je suis venu avec est d'avoir une piqûre de MySQL stockées dans la table de MySQL avec l'ID utilisateur et exécuter un cron qui prend tout cela et itère à travers elle ... court le Cron et s'il y a des nouvelles annonces, il envoie un e-mail.

Mais je ne pense pas que ce soit la meilleure idée, car cela signifie aussi que s'il y a un changement dans la conception de base de données (ex, noms de champs), toutes ces requêtes ne vont mal.

Merci beaucoup

Était-ce utile?

La solution

En général, vous souhaitez concevoir vos tables pour être aussi flexible que possible pour tenir compte des changements inattendus. Si ces champs modifier vos requêtes devront changer de toute façon.

Sans avoir les détails, ceux-ci seraient mes directives:

  1. Avoir un utilisateur Tableau avec l'index et e-mail

  2. Avoir une table de types d'abonnement

  3. Avoir une table de recherche ID utilisateur + Abonnement

  4. Avoir une table de messages en attente

Lorsqu'une nouvelle mise à jour est présente, rassembler tous les e-mails et créer une entrée de journal des messages dans une table de messages en attente.

Créez votre Cron pour saisir 20 messages non envoyés toutes les quelques minutes et supprimer le message une fois qu'il est envoyé.

La raison pour laquelle je dis que de les envoyer via le itérativement Cron est parce que vos abonnés vous cultivez ne voulez pas avoir des centaines d'e-mails doivent sortir à la fois et attacher les ressources de votre serveur pour la file d'attente de messagerie. Vous pouvez simplement continuer à ajouter des messages comme il le faut et votre file d'attente envoie régulièrement les.

Nous utilisons cette méthode assez efficace pour toutes nos applications emailing de masse, les systèmes d'enregistrement d'erreur et de notification de rappel. Il ne peut pas être la meilleure solution, mais il est montré très maniable et flexible.

Autres conseils

Si vous changez la conception de base de données, vous aurez certainement de réparer quelque chose, voilà comment fonctionne ce monde.

Si pour une raison quelconque, il est difficile pour vous de changer la tâche cron, vous pouvez créer une procédure stockée qui retourne toujours un resultset adapté à la tâche, et changer la procédure stockée à la place.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top