मैं बैकएंड मॉड्यूल (PHP में लिखा गया) का निर्माण कर रहा हूं जिसका उपयोग निजी चैट रूम की निगरानी के लिए किया जाएगा, जिसमें [बिल्कुल] 300 सेकंड (5 मिनट) के लिए कोई गतिविधि नहीं है। यदि ऐसा है, तो स्क्रिप्ट डेटाबेस अपडेट करेगा (अधिकतम उपयोगकर्ताओं को एक निश्चित संख्या में सेट करता है, और अन्य सामान)। मैं अब समय() और अंतिम संदेश भेजे गए समय के अंतर से निष्क्रिय समय की अवधि की निगरानी कर रहा हूं।PHP में लगातार डेटाबेस में परिवर्तनों की जांच करने के लिए सबसे अच्छा अभ्यास क्या है?
मैंने क्या किया: एक क्रॉन नौकरी सेट करें जो हर मिनट या 60 सेकंड में मेरी निगरानी स्क्रिप्ट (PHP-cli के माध्यम से) चलाएगी।
$expire_time = time() + 60;
//this loop will run for 60 seconds
while(time() < $expire_time)
{
$idle_time = get_all_chatrooms_idle_time();
foreach($idle_time as $s_time)
{
if($s_time >= 300)
{
update_changes();
}
}
usleep(500000);
}
तुरन्त 300 सेकंड के बाद निष्क्रिय समय अधिकतम उपयोगकर्ताओं की स्थापना की हालत भान नहीं किया जा सकता है: निगरानी स्क्रिप्ट के अंदर। तो मैं वास्तव में सलाह का पालन नहीं कर सकता जैसे: "कुछ भी करने से बचें जब तक कि वास्तव में कुछ पूछता न हो" भले ही यह बहुत समझ में आता है।
कारण? सक्रिय और निष्क्रिय चैट रूम का डेटा वास्तविक समय होना चाहिए क्योंकि यह एक डैशबोर्ड पर भी प्रदर्शित किया जाएगा। चैट रूम मॉडरेटर का भुगतान इस पर निर्भर करता है।
क्यों उन्हें हर डैशबोर्ड लोड की जांच नहीं करें? मुझे खेद है लेकिन अभी भी संभव नहीं है।
जांच सर्वर की तरफ होने की आवश्यकता है और डैशबोर्ड खुद को AJAX के साथ अपडेट करता है, हर सेकेंड मतदान करता है।
जब मैं पृष्ठ पर निगरानी कोड संलग्न मेरी ajax कॉल द्वारा अनुरोध किया जा रहा मुझे लगता है कि मेरे वर्तमान कार्यान्वयन की तुलना में अधिक संसाधन गहन है (मुझे ठीक कर लें इम गलत)
मुझे आप संख्या के बारे में कुछ मोटे अनुमान देता हूँ
- मध्यस्थों सहित chatters की संख्या: ~ 800
- चैटरूम की संख्या: प्रयोक्ताओं की आप लोड/यातायात हम मिल रहे हैं कल्पना कर सकते हैं ताकि ~ 250
- (एक्स) चैटरूम मध्यस्थों की संख्या: ~ 50
- (x) अपने मालिक और उनके कर्मचारियों:
(x) - देख सकते हैं डैशबोर्ड
वहाँ एक बेहतर तरीका है? क्या मैं यह ठीक कर रहा हूँ?
ऐसा लगता है कि आप इसे गलत कर रहे हैं। कभी सीआरओएन नौकरियों के बारे में सुना है? मुझे लगता है कि ऐसा करने का ईश्वरीय तरीका हर 1 मिनट (या उससे कम) के लिए क्रॉन नौकरी स्थापित करना है? जो चयन के साथ सरल MySQL स्क्रिप्ट चलाएगा। – Stranger
http://stackoverflow.com/questions/4834829/php-long-polling-without-excessive-database-access –
@Stranger मैंने किया था? – yowmamasita