2010-03-25 16 views
10

आइए कहें कि मैं मेल फ़ोल्डर में परिवर्तनों की निगरानी के लिए IMAP IDLE का उपयोग कर रहा हूं।आईएमएपी निष्क्रिय टाइमआउट

आईएमएपी स्पेक का कहना है कि आईडीएलई कनेक्शन केवल 30 मिनट के लिए ज़िंदा रहना चाहिए, लेकिन यह अनुशंसा की जाती है कि कम से कम मिनटों का चयन किया जाए - 20 मिनट कहें, फिर निष्क्रिय को रद्द करें और पुनरारंभ करें।

मुझे आश्चर्य है कि क्या होगा यदि निष्क्रिय सामग्री निष्क्रिय करने और नई निष्क्रियता के बीच मेल सामग्री बदल दी गई हो। एक ईमेल संभावित रूप से याद किया जा सकता है। यह देखते हुए कि हाल ही में थोड़ा अस्पष्ट है, इससे पुराने निष्क्रिय होने से पहले एक संदेश सूची मिल सकती है, और एक नई निष्क्रिय शुरू होती है।

लेकिन यह लगभग हर 20 मिनट में मतदान के समान ही है, और निष्क्रिय होने के कुछ लाभों को हरा देता है।

वैकल्पिक रूप से, समाप्त होने से पहले एक नया निष्क्रिय सत्र शुरू किया जा सकता है।

लेकिन किसी भी मामले में, मुझे लगता है कि यह समस्या पहले ही हल हो चुकी है, इसलिए मैं सिफारिशों के लिए पूछ रहा हूं।

धन्यवाद,

पॉल

उत्तर

21

आप जानते हैं, IMAP निष्क्रिय आदेश के प्रयोजन (RFC 2177) यह संभव सर्वर संचारित स्थिति अद्यतन वास्तविक समय में ग्राहक के लिए के लिए बनाने के लिए है। इस संदर्भ में, स्थिति अद्यतन का अर्थ है अनचाहे IMAP सर्वर प्रतिक्रियाएं जैसे कि EXISTS, RECENT, FETCH या EXPUNGE जो नए संदेश आने पर भेजे जाते हैं, संदेश स्थिति अद्यतन होती है या एक संदेश हटा दिया जाता है।

हालांकि, इन IMAP स्थिति अद्यतन किसी भी IMAP आदेश द्वारा दिया जा सकता है, न सिर्फ निष्क्रिय आदेश - उदाहरण के लिए, NOOP आदेश (RFC 3501 खंड 6.1.2 देखें) सर्वर अद्यतन के लिए मतदान किया जा सकता है साथ ही (यह आईडीईएल कमांड की भविष्यवाणी करता है)। आईडीएलई केवल इन अद्यतनों को और अधिक कुशलता से प्राप्त करना संभव बनाता है - यदि आप आईडीईएल कमांड का उपयोग नहीं करते हैं, तो सर्वर अपडेट क्लाइंट द्वारा भेजा जाएगा जब क्लाइंट किसी अन्य कमांड को निष्पादित करता है (या यहां तक ​​कि जब कुछ मामलों में कोई आदेश प्रगति नहीं होता है) - विवरण के लिए RFC 3501 अनुभाग 5.2 और 5.3 देखें।

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

0

एक और दृष्टिकोण मॉनीटर किए गए फ़ोल्डर के अंतिम उच्चतम यूआईडी को याद रखना होगा। जब भी आपको लगता है कि मौका है कि आप अपडेट चूक गए हैं। निम्नानुसार एक खोज करें: *

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