php &

2 Cevap php

I have a real estate website that has several categories. And i want the users to be able to subscribe via email to a certain list of offers, they can either be offers from a category ... or offers from a search list.

Nasıl ... onlar mysql en iyi yolu abonelik konum saklayabilir ve aynı zamanda ne kadar ben hakkında gitmek ve bildirim yapacağız.

I ile geldi iyi ... bir mysql acı kullanıcı kimliği ile mysql tabloda saklanan var ve bunun sayesinde bütün bunlar ve tekrara götüren bir cron çalıştırmak için cron çalışır ve yeni reklamlar varsa bir e-posta gönderir.

Ama aynı zamanda veritabanı tasarımı (ex, alan adları) bir değişiklik varsa o zaman bütün bu sorgular kötü gitmek demektir, çünkü bu iyi bir fikir olduğunu sanmıyorum.

çok teşekkürler

2 Cevap

Genel olarak beklenmeyen bir değişiklik için hesap mümkün olduğunca esnek olması için tabloları tasarlamak istiyorum. Bu alanlar değiştirirseniz, sorguları zaten değiştirmeniz gerekir.

Özelliklerini sahip olmadan, bu benim kurallar olacaktır:

  1. Indeksi ve e-posta ile bir Kullanıcılar tablo var

  2. Bir abonelik türleri tablo var

  3. Kullanıcı ID + Abonelik arama tablosu var

  4. Bekleyen bir mesaj tablo var

Yeni bir güncelleme mevcut olduğunda, tüm e-posta toplamak ve bekleyen mesajlar tabloya bir mesaj günlük girdisi oluşturun.

20 Gönderilmemiş mesajlar birkaç dakikada kapmak ve gönderildikten sonra mesajı silmek için Cron oluşturun.

Ben iteratif CRON yoluyla gönderebilirsiniz söylemek nedeni çünkü aboneler e-postaların yüzlerce anda dışarı çıkmak ve posta kuyrukta için sunucunun kaynaklarını bağlamak için var istemiyorum büyüdükçe. Sadece olmak ve kuyruğu sürekli onları göndereceğiz gerekmez gibi mesajlar eklemeye devam edebilirsiniz.

Hepimiz toplu e-posta uygulamaları, hata günlüğü ve hatırlatma bildirim sistemleri için oldukça etkili bu yöntemi kullanıyoruz. Bu en iyi çözüm olmayabilir ama çok yönetilebilir ve esnek olduğu gösterilmiştir oluyor.

Eğer veritabanı tasarımını değiştirmek varsa, kesinlikle bu dünya nasıl çalışır, bir şey düzeltmek gerekecek.

Eğer cron görevi değiştirmek için nedense çok zor, her zaman görev için uygun bir resultset döndüren saklı yordam oluşturmak ve bunun yerine saklı yordam değiştirebilirsiniz.