2010-04-08 10 views
7

संकल्पनात्मक रूप से बोलना PHP और MySQL का उपयोग कर वेबसाइट के लिए एक उपलब्धि प्रणाली लिखने के बारे में कैसे होगा?php में stackoverflow पर यहां एक उपलब्धि प्रणाली?

क्या ऐसा करने का एकमात्र असली तरीका है उपलब्धियों के परीक्षण के लिए लगातार MySQL प्रश्नों को करना है?

+0

के रूप में एक gamification मंच कंपनी से एपीआई का उपयोग करने मैं 'यह कहने का एकमात्र असली तरीका था, क्योंकि आपको ट्रैक रखने में सक्षम होना चाहिए कि कौन सी उपलब्धियां पहले ही हासिल की जा चुकी हैं। – studioromeo

+0

चूंकि हम वैचारिक स्तर पर बात कर रहे हैं, मुझे नहीं लगता कि इस प्रश्न के पास MySQL या PHP के साथ कुछ भी करना है। – pkaeding

+0

PHP और MySQL की सीमाएं हैं, गेम डेवलपमेंट में मेरे पास एक इंजन है जिसमें एक इवेंट सिस्टम है, मुझे केवल यह उपलब्ध कराने के लिए उपलब्धियों पर सुनना है कि कोई उपलब्धि हासिल हुई थी या नहीं। यह रेशमी चिकनी और कुशल है लेकिन कुशलता से PHP में नहीं किया जा सकता है। – tweetypi

उत्तर

1

meta पर एक समान प्रश्न पूछने पर विचार करना चाहें, यह देखने के लिए कि Jeff इस क्षेत्र में सीखे गए अपने किसी भी पाठ को साझा करने के इच्छुक हैं। यदि आप करते हैं, तो प्रश्न विशेष रूप से समस्या से संपर्क करने के तरीके के बारे में होना चाहिए। हालांकि, यह प्रश्न इस साइट के लिए एक पूरी तरह से वैध प्रश्न है (क्योंकि यह एक नई परियोजना बनाने के बारे में पूछ रहा है, जो एसओ पर किया गया था) से प्रेरित है।

मुझे संदेह है कि एसओ टीम के पास ऐसी नौकरी है जो समय-समय पर नए बैज को पुरस्कार देने के लिए प्रश्नों का एक सेट चलाती है, और फिर उन्हें पुरस्कार देती है। यही कारण है कि उन्हें अर्जित करने के लिए कार्रवाई के तुरंत बाद बैज को सम्मानित नहीं किया जाता है।

+0

आह वास्तव में एक अच्छा बिंदु है!मुझे यह भी एहसास नहीं हुआ कि जैसे ही उन्हें सम्मानित किया गया था, बैज को सम्मानित नहीं किया गया था, हालांकि यह समझ में आता है क्योंकि ये प्रश्न काफी धीमे होंगे ... करुणा इसे तुरंत नहीं किया जा सकता .. – tweetypi

+20

यह ** नहीं ** मेटा –

+2

पर संबंधित है, मेरा मतलब यह नहीं था कि यह प्रश्न मेटा पर था। मेरा मतलब था कि एसओ टीम को सीखने के दौरान सीखने वाली अंतर्दृष्टि के लिए एसओ टीम से पूछना एक उचित बहन सवाल हो सकता है। मैंने इस पर स्पष्टीकरण जोड़ा है। – pkaeding

14

आपके पास दो विकल्प हैं, और सबसे अधिक संभावना उन्हें गठजोड़ कर सकते हैं:

आप एक क्रॉन नौकरी कि हर एक्स मिनट में चलती हो सकता है, और प्रत्येक उपयोगकर्ता और चेक को देख अगर वे एक नया लायक डेटाबेस पर चलता है बिल्ला।

उदाहरण के लिए, स्टैक ओवरव्लो इसे नाइस उत्तर बैज के लिए लागू करता है। हर बार यह चलता है, यह आपके पास +10 अपवॉट्स के साथ कितने उत्तर देता है, और देखता है कि आपको किसी अन्य बैज से सम्मानित करने की आवश्यकता है या नहीं। (यह 10 अपवॉट्स और 4 नाइस उत्तर बैज के साथ 5 पोस्ट देखता है, आपको बैज मिलता है)। जेफ ने पहले ही कहा है कि इसका मतलब है कि अगर आपको कोई जवाब मिलता है जो 10 वोट प्राप्त करता है, तो डाउनवॉट किया जाता है, और फिर एक और पोस्ट में 10 वोट मिलते हैं, तो आपको बैज नहीं मिलेगा।

दूसरा विकल्प ईवेंट-आधारित ट्रिगर्स है। जो वास्तव में बस हैं:

$badgeSystem->giveBadge("Some Badge Name", $User_ID); 

यह उन घटनाओं के लिए उपयोग किया जा सकता है जिन्हें आप जानते हैं। आत्मकथा बैज की तरह। संभावना है कि जब तक सबमिट बटन दबाया नहीं जाता है तब तक उपयोगकर्ता अपनी प्रोफ़ाइल भर नहीं पाएगा, इसलिए साइट सिर्फ यह जांच सकती है कि उपयोगकर्ता ने पूरी चीज भर दी है, और यदि उनके पास है, और उन्हें अभी भी बैज की आवश्यकता है, तो वे इसे प्राप्त करते हैं।

क्रॉन-जॉब का उपयोग लगातार जांच की जाने वाली कार्रवाइयों के लिए किया जाना चाहिए। 150 दिनों के लिए साइट पर जाने या 500 बार संपादित करने जैसे मात्रात्मक लक्ष्यों की तरह चीजें।

ईवेंट-आधारित ट्रिगर तब होता है जब कोई ईवेंट केवल तब होता है जब उपयोगकर्ता एक विशिष्ट कार्यवाही करता है, जैसे फॉर्म सबमिट करना।

(आप शायद या तो लगभग किसी भी स्थिति के लिए इस्तेमाल कर सकते हैं। घटना के आधार पर ट्रिगर हालांकि तेज प्रतिक्रिया देता है ..)

संबंधित मुद्दे