2009-01-22 11 views
5

स्टैक ओवरफ़्लो पर, प्रोफ़ाइल पृष्ठ में "पिछली बार देखी गई" संपत्ति सूचीबद्ध होती है। ऐसा लगता है कि प्रत्येक पृष्ठ दृश्य (प्रदर्शन कारणों से, जाहिर है) पर अपडेट नहीं किया जा रहा है। आप इसे भारी-ट्रैफ़िक वेब ऐप में कैसे कार्यान्वित करेंगे? क्या आप इसे केवल कुछ पृष्ठों पर अपडेट करेंगे? या आखिरी बार जब आपने उपयोगकर्ता की आखिरी विज़िट को लॉग किया था और डेटाबेस अपडेट करने से पहले एक विशिष्ट समय का इंतजार किया था? या कुछ पूरी तरह से अलग है?उपयोगकर्ताओं के लिए "आखिरी देखी गई" सुविधा को आप कैसे कार्यान्वित करेंगे?

उत्तर

2

मैं एक सत्र का उपयोग करूंगा। और केवल इसे सत्र की पहली यात्रा सेट करें। अगर लोग ब्राउजर को छोड़ देते हैं तो यह हर घंटे या तो इसे रीसेट कर देता है। Php में इस तरह कुछ:

if(!isset(!_SESSION['lastSeen'])){ 
$_SESSION['lastSeen'] = time(); 
updateLastSeenInDatabaseOrSomething(); 
} 
else{ 
if($_SESSION['lastSeen'] < time() + 2 * 60 * 60){ //2 hours 
    $_SESSION['lastSeen'] = time(); 
    updateLastSeenInDatabaseOrSomething(); 
} 
} 

ऐसा कुछ है लेकिन फिर ओओ के साथ और दो बार एक ही काम नहीं कर रहा है।

5

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

मैं कार्यान्वयन विवरण के बारे में बात नहीं करूंगा क्योंकि यह पहले से ही अन्य उत्तरों से ढका हुआ है (और मुझे शायद यह गलत लगेगा)।

0

इसके लिए "कमांड" डिज़ाइन पैटर्न का उपयोग करने पर विचार करें। यह आपको दो तरीकों से मदद करेगा - प्रश्न का उत्तर दें और "पूर्ववत करें/फिर से" सुविधा भी लागू करें। आपको उस पैटर्न के अनुसार डिज़ाइन की गई कमांड ऑब्जेक्ट्स की एक सूची बनाए रखना चाहिए।

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

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