Nasıl newsfeed gibi Facebook için?

4 Cevap php

Nasıl benim PHP tabanlı topluluk uygulama özelliği gibi bir Facebook NEWSFEED impelement olabilir? Örneğin "X kullanıcı Z bir olaya katılıyor, yeni bir fotoğraf yükledi." Farklı tablolardaki tüm bu verileri getiriliyor da kaynaklarını tüketir.

Teşekkürler.

4 Cevap

Orada bunu farklı şekillerde bir çift vardır, ama ben öneririm biri şudur. Her kullanıcı, zaman damgası ve meydana eylem türü için bayraklar (veya önceden tanımlanmış tuşları) ile birlikte eylem açıklaması için tüm kayıtları tutan tek bir 'tarih' tablo tutun. Bu eylemlerin belirli türleri için ve görüntülemek için belirlenen bir süre çerçevesinde seçici tek bir tabloyu sorgulamak için izin verecek. Eğer daha sonra tekrar kullanmak olmayacak biliyorum eski verileri tasfiye düşünebilirsiniz böylece Ancak, kullanıcılar bir sürü bu tablo hızlı bir şekilde büyüyecektir. Hızlı sorguları tutmak için indeksler yakın ilgi ve muhtemelen sık sık aynı sonuçları üreten olacağından sorgu önbelleğe alma kullanmayı düşünün.

Sürece denetim kullanıcıların eylemleri için bu tarihsel verileri kullanarak planlama değildi olarak o bir süre sonra dökümü için ince olmalıdır. Eğer bir denetim izi ihtiyacınız yoksa o zaman son eylemleri gösteren bir temp_history tablo oluştururken düşünün ve sonra bir CRON uzun süreli depolama için kalıcı bir denetim masaya onların son eylemleri taşımanız gerekebilir.

Web sitenizde faaliyet dediğimiz tanımlayarak başlayın. Bir etkinlik birden hiper linkler içerebilir. Yani bir php çok boyutlu dizi tefrika nesnesi olarak tabloda gidebilirsiniz hangi burada yardımcı olabilir.

Say x is now connected with y, z, a and b. you can define y, z, a and b as profile links. Say x commented on y new photo. In this case y become a new hyper link to the person's profile photo. Say x became a fan of zoozoo group. In this case zoozoo becomes a hyper link to the fan page.

Bir o activity_USER_ID büyük marka, bir kullanıcı bu tabloyu oluşturmak ve tekrar oluşturmak zorunda değilsiniz kontrol kayıt yaptıran her zaman ölçekli bir etkinlik tablo oluşturun.

1,2,3 gibi Etkinlikler tanımlayın veya ne hissediyorum insanlar size destek topluluklar ilginizi çekebilir iyi bir faaliyettir.

tablo yapısı basit olmalıdır: aktivite php dizi, zaman damgası. Fare kaydırma ile facebook yapılır gibi aktivitesini doldurmak için jQuery ve Ajax kullanıyorsanız o zaman her zaman json için php dizi dönüştürmek ve istemci tarafında biçimlendirebilirsiniz.

Kullanıcı oturum zaman bunu

Kullanıcı tabanı büyük ise bir milyon o zaman event_MM_DD_YYYY olayları koyacağız ve sonra etkinlik tabloda depolamak için bu olayların bir toplu işlem yapabilirsiniz bazı iş işleme sistemi koymak isteyebilirsiniz demek.

Fazla 10 20 30 son aktivitelerini gösterir asla.

Bu sizin için yardımcı olur umarım :)

Tek bir tablodan veri çekme: Ben kendi sorusunu yanıtladı düşünüyorum.

Basit bir yaklaşım, tüm diğer bileşenler kullanıcıların haber besleme için bir şey kaydeden merkezi bir "olay kaydedici" konuşabilirsiniz olurdu.

I liked Paul's solution (easy with certain frameworks like Symfony). If you want ot go further in terms of speed, you can use in addition a per-user caching system which will query for data and build new feeds on first request. Then retrieve the cached data on following requests. The event logger will clear the cache for concerned users when trigerred.

Facebook durumda, ben göstermek haber var onlar istemci tarafı bildirmek için 'push' ajax uygulamasını kullanabilirsiniz düşünüyorum.

XCache, Apc veya dosya sistemi tabanlı önbelleğe alma sistemi, böyle bir sistem inşa yardımcı olabilir.