जिस तरह से मैं इसे करता हूं वह समय-समय पर AJAX (30 सेकंड में एक बार) का उपयोग करके एक विशेष हैंडलर को पिंग करता है। यह बहुत सारे अनुरोध हैं, इसलिए हर बार अंतिम-विज़िट के साथ ऑनलाइन उपयोगकर्ता तालिका को अपडेट करने के बजाय मैं memcache अपडेट कर रहा हूं। मैं केवल डेटाबेस रिकॉर्ड को अपडेट करता हूं जब यह memcache रिकॉर्ड से 5 मिनट पीछे होता है (आप लोड के आधार पर बड़ी या छोटी देरी चुन सकते हैं)। फिर एक क्रॉन जॉब ऑनलाइन उपयोगकर्ता तालिका से पुराने रिकॉर्ड हटा देता है।
यह जांचने के लिए कि कोई विशिष्ट उपयोगकर्ता ऑनलाइन है या नहीं, मैं बस उसके memcache रिकॉर्ड की जांच करता हूं। त्रुटि कभी भी 30 सेकंड से अधिक नहीं होती है। डेटाबेस कभी भी 5 मिनट से अधिक पीछे नहीं होता है, इसलिए डेटाबेस के परिणाम भी बहुत सटीक होते हैं।
मैं इन आवधिक अनुरोधों का उपयोग उपयोगकर्ता को घटनाओं को आगे बढ़ाने के लिए भी करता हूं।