2009-10-04 4 views
39

क्या कोई मुझे बता सकता है कि मेरा सत्र नीचे दिए गए डेटा से कितना समय टिकेगा? - मुझे यकीन नहीं है कि कौन सा मुझे बताता हैमेरा सत्र कब तक चलता रहेगा?

session.auto_start Off Off 
session.bug_compat_42 Off Off 
session.bug_compat_warn On On 
session.cache_expire 180 180 
session.cache_limiter nocache nocache 
session.cookie_domain no value no value 
session.cookie_httponly Off Off 
session.cookie_lifetime 0 0 
session.cookie_path//
session.cookie_secure Off Off 
session.entropy_file no value no value 
session.entropy_length 0 0 
session.gc_divisor 1000 1000 
session.gc_maxlifetime 1440 1440 
session.gc_probability 1 1 
session.hash_bits_per_character 5 5 
session.hash_function 0 0 
session.name PHPSESSID PHPSESSID 
session.referer_check no value no value 
session.save_handler files files 
session.save_path /var/lib/php/session /var/lib/php/session 
session.serialize_handler php php 
session.use_cookies On On 
session.use_only_cookies Off Off 
session.use_trans_sid 0 0 

उत्तर

77

सामान्य तौर पर आप कह सकते हैं session.gc_maxlifetime अपने सत्र डेटा के अंतिम परिवर्तन के बाद से अधिकतम जीवनकाल निर्दिष्ट करता है (नहीं पिछली बार session_start बुलाया गया था!)। लेकिन PHP का सत्र हैंडलिंग थोड़ा और जटिल है।

क्योंकि सत्र डेटा एक कचरा कलेक्टर है कि केवल session.gc_probability की सम्भावना session.gc_divisor से विभाजित के साथ session_start द्वारा कहा जाता है से हटा दिया है। डिफ़ॉल्ट मान 1 और 100 हैं, इसलिए कचरा कलेक्टर केवल session_start कॉलों में से केवल 1% में ही शुरू होता है। इसका मतलब है कि सत्र में सिद्धांत पहले से ही समाप्त हो चुका है (सत्र डेटा session.gc_maxlifetime सेकंड पहले से अधिक बदल दिया गया था), सत्र डेटा का उपयोग उस से अधिक लंबे समय तक किया जा सकता है।

इस तथ्य के कारण मैं आपको अपने स्वयं के सत्र टाइमआउट तंत्र को लागू करने की सलाह देता हूं। अधिक जानकारी के लिए my answer to How do I expire a PHP session after 30 minutes? देखें।

+0

session.cache_expire इस के साथ कैसे सहभागिता करता है? – matteo

+5

'session.cache_expire' केवल सर्वर प्रतिक्रिया के HTTP कैशिंग को प्रभावित करता है लेकिन सत्र समाप्ति पर इसका कोई प्रभाव नहीं पड़ता है। – Gumbo

+1

ओह, मुझे लगता है, cache_expire cache_limiter के साथ मिलकर काम करता है। PHP के दस्तावेज इसके बारे में बहुत अस्पष्ट है। मैं यहां तक ​​कि दस्तावेज के एक शब्द का वर्णन नहीं कर सकता: http://es1.php.net/manual/en/function.session-cache-expire.php जब तक कि मैं इसे पढ़ूं: http: //es1.php .NET/manual/en/function.session-cache-limiter.php धन्यवाद @ गम्बो – matteo

17

यह एक है। सत्र 1440 सेकंड (24 मिनट) तक चलेगा।

session.gc_maxlifetime 1440 1440 
5

If session.cookie_lifetime is 0, the session cookie lives until the browser is quit.

संपादित: दूसरों session.gc_maxlifetime सेटिंग उल्लेख किया है। जब सत्र कचरा संग्रह होता है, तो कचरा कलेक्टर किसी भी सत्र डेटा को हटा देगा जिसे session.gc_maxlifetime सेकंड से अधिक समय तक एक्सेस नहीं किया गया है। सत्र कुकी के लिए समय-समय पर सेट करने के लिए, session_set_cookie_params() पर कॉल करें या session.cookie_lifetime PHP सेटिंग को परिभाषित करें। यदि यह सेटिंग session.gc_maxlifetime से अधिक है, तो आपको यह सुनिश्चित करने के लिए कि आपके सत्र समाप्त नहीं होंगे, आपको कुकी जीवनकाल से अधिक या उसके बराबर मूल्य में session.gc_maxlifetime बढ़ाना चाहिए।

+0

धन्यवाद, जब मैं ब्राउज़र बंद करता हूं और पृष्ठ को फिर से खोलता हूं, तो भी मुझे वही सत्र आईडी दिखाई देता है? –

+1

यदि आपका ब्राउज़र अभी भी चल रहा था, तो, हाँ। सत्र कुकी केवल तभी समाप्त हो जाती है जब ब्राउज़र एप्लिकेशन छोड़ देता है। –

+0

कुकी हाँ, लेकिन सत्र को स्वयं बिना किसी गतिविधि के 24 मिनट के बाद समाप्त हो जाएगा, भले ही आप ब्राउज़र को खोलें। –

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

  • कोई संबंधित समस्या नहीं^_^