Kavramsal olarak nasıl bir PHP ve MySQL kullanarak bir web sitesi için bir başarı sistemi yazma konusunda gitmek konuşan?
Bunu yapmanın tek gerçek yolu sürekli MySQL sorguları başarıları ve bu tür için test yapmak için mi?
Sen Jeff onun derslerden herhangi biri, bu alanda öğrenilen paylaşmaya istekli olup olmadığını görmek için, meta benzer bir soru soran düşünebilirsiniz. Bunu yaparsanız, soru SO sorunu yaklaştı yol hakkında özel olmalıdır. This question, however, is a perfectly valid question for this site (since it is asking about created a new project, inspired by what was done on SO).
Ben SO takım periyodik ödül için yeni rozetleri aramak için sorguları bir dizi çalışır ve daha sonra ödüller onlara bir iş olduğunu, ancak, sanıyorum. Eylem onları kazanmak için alınır sonra rozetleri hemen layık değil neden budur.
İki seçeneğiniz var, ve büyük olasılıkla bunları birleştirebilirsiniz:
Her X-dakikada çalışır ve onlar yeni bir rozeti hak varsa her kullanıcı ve çek bakarak veritabanı üzerinde çalışan bir cron işi olabilir.
Örneğin, StackOverflow güzel cevap rozeti için bu uygular. Her şey o size kaç Cevapları 10 upvotes ile kontrol eder ve başka bir rozeti gerekiyorsa görür, çalışır. (Bu size bir rozet almak, 10 upvotes ve 4 Güzel Cevap Rozetleri ile 5 Mesajları görür). Jeff çoktan downvoted sonra, bir 10 oy alır bir cevap alırsanız, bu anlamı ifade etmiştir ve daha sonra başka bir yazı 10 oy alır, bir rozet almazsınız.
İkinci seçenek, olay tabanlı tetikler olduğunu. Gerçekten sadece Hangi:
$badgeSystem->giveBadge("Some Badge Name", $User_ID);
Bu oluyor biliyor etkinlikler için kullanılabilir. Otobiyografi rozeti gibi. Şansı teslim düğmeye basıldığı sürece kullanıcının kendi profil doldurmak değil, bu nedenle kullanıcının tüm şeyi doldurdu ve onlar var ve onlar hala rozeti gerekiyorsa, bunu alırsanız site sadece kontrol edebilir.
Cron işi sürekli kontrol edilir eylemler için kullanılmalıdır. 150 gün boyunca siteyi ziyaret, ya da 500 kez düzenleme gibi nicel hedefleri gibi şeyler.
Kullanıcı böyle bir form göndererek olarak belirli bir eylemi, doesa eğer bir olay sadece ne zaman olacağını olay tabanlı tetik gerçekleşmesi gerekir.
(Muhtemelen hemen hemen her durum için de kullanabilirsiniz. Olay tabanlı tetik olsa daha hızlı geri bildirim verir ..)
Başka bir seçenek gibi http://iactionable.com gibi bir gamification platformu şirketten API kullanmak için
Burada bir php framework (CodeIgnitor) bir başarı sistemi uygulamak için nasıl detayı blog post -> http://geeknoobie.blogspot.com.au/2012/10/how-to-implement-achievement-system-in.html