Pergunta

Eu tenho um site imobiliário que possui várias categorias. E eu quero que os usuários possam se inscrever por e-mail a uma determinada lista de ofertas, eles podem ser ofertas de uma categoria ... ou ofertas de uma lista de pesquisa.

Como posso armazenar eles estão subscrição a melhor maneira no mysql ... e também como faço para ir sobre e fazer a notificação.

O melhor que eu vim com é ter um mysql Sting armazenado na tabela mysql com o ID do usuário e executar um cron que leva tudo isso e itera através dele ... corre o cron e se houver novos anúncios envia um e-mail.

Mas eu não acho que esta é a melhor idéia, uma vez que também significa que se houver uma mudança no design de banco de dados (ex, nomes de campo), então todas essas consultas iria ruim.

muito obrigado

Foi útil?

Solução

Em geral, você quer projetar suas tabelas para ser tão flexível quanto possível conta para a mudança inesperada. Se esses campos mudar suas consultas teria necessidade de mudar de qualquer maneira.

Sem ter os detalhes, estes seriam minhas orientações:

  1. Tenha uma tabela de usuários com o índice e-mail

  2. Tenha uma mesa tipos de assinatura

  3. Tenha um ID de usuário + Assinatura consulta à tabela

  4. Tenha uma mensagem mesa pendentes

Quando uma nova atualização está presente, recolher todos os e-mails e criar uma entrada de registo de mensagens em uma tabela de mensagens pendentes.

Construa seu Cron para agarrar 20 mensagens não enviadas a cada poucos minutos e apagar a mensagem, uma vez que é enviado.

A razão de eu dizer para iteratively enviá-los através do cron é porque, como seus assinantes crescer você não quer ter centenas de e-mails tem que sair de uma vez e amarrar os recursos do servidor para a fila mail. Você pode apenas manter-se adicionar mensagens sempre que necessário e sua fila serão sempre enviá-los.

Temos vindo a utilizar este método bastante eficaz para todos os nossos sistemas de aplicativos de e-mail em massa, de registro de erro e notificação de lembrete. Pode não ser a melhor solução, mas é mostrado para ser muito manejável e flexível.

Outras dicas

Se você mudar o projeto de banco de dados, você certamente vai ter que corrigir alguma coisa, é assim que isso funciona mundo.

Se por algum motivo, é difícil para você mudar a tarefa cron, você pode criar um procedimento armazenado que sempre retorna um conjunto de resultados adequado para a tarefa, e altere o procedimento armazenado em vez.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top