लगभग। फ़ाइल (सत्र) तुरंत हटाया नहीं जाएगा, यह session.gc_probability और session.gc_divisor द्वारा निर्धारित किया गया है।
नहीं है, सत्र समाप्त हो जाएगा, लेकिन जैसा कि पिछले बिंदु में कहा गया है सत्र फ़ाइल का विलोपन निर्धारित किया जाता है
कि आमतौर पर सही है, लेकिन यदि आप अपने स्वयं सत्र हैंडलर लागू करने के लिए थे, तो आप कर सकते थे यहां तक कि इस तरह से session.gc_maxlifetime कि नजरअंदाज कर दिया है
DB में सत्र भंडारण उन नियमों में बदलाव नहीं होना चाहिए सत्र की समाप्ति के व्यवहार में परिवर्तन है, लेकिन उन्हें एक छोटे से खिंचाव सकता है, यदि आप चाहते थे।
संपादित करें:
इस तरह आप अपने स्वयं के सत्र हैंडलर रजिस्टर कर सकते हैं (हैंडलर एक वर्ग जा रहा है) और फिर जो कुछ भी आप इसके साथ चाहते
सबसे पहले करते हैं, लगता है कि हम एक वर्ग है मोटे तौर पर है, कि हमारे आवेदन के लिए सत्र संभालने जा रहा है।
class MySession {
function open($save_path, $session_name) {
}
function close() {
}
function read($id) {
}
function write($id, $sess_data) {
}
function destroy($id) {
}
function gc($maxlifetime) {
}
}
php में हैंडलर रजिस्टर करने के लिए, आप केवल हमारे मामले में, session_set_save_handler
समारोह कॉल करने के लिए इस तरह की जरूरत है: वहाँ वास्तव में बेहतर तरीके हैंडलर ही है, आप कर सकते थे रजिस्टर करने के लिए कर रहे हैं
// register the session handler
$sess = new MySession();
session_set_save_handler(array($sess, 'open'),
array($sess, 'close'),
array($sess, 'read'),
array($sess, 'write'),
array($sess, 'destroy'),
array($sess, 'gc'));
ध्यान दें कि यहां तक कि अपनी कक्षा के निर्माता, या कई अन्य तरीकों से भी ऐसा करें। लेकिन मुझे लगता है कि यह मुद्दा नहीं है।
महत्वपूर्ण बात यह है कि हालांकि PHP आपको सत्र प्रबंधन तंत्र के मानक व्यवहार से संबंधित आवश्यक चर देता है, आपको इसका सम्मान नहीं करना है (ऐसा नहीं है कि मैं इसकी अनुशंसा करता हूं)।
नीचे एक टिप्पणी का जवाब करने के लिए, maxlifetime पैरामीटर अनदेखी करने के लिए, आप पर ध्यान न दें कि आपके जीसी विधि और उपयोग में जो कुछ भी आप आवश्यक/सही समझे, उदाहरण के लिए (db छद्म कोड का उपयोग कर):
function gc($maxlifetime) {
$sql = "DELETE * FROM MySession WHERE lastAccess < NOW()-3600";
// execute the query, say I have PDO instance in $dbh variable
$dbh->execute($sql);
}
देखा, आप बस इसे स्वयं करके करके PHP सत्र सेटिंग्स को पूरी तरह से बाधित कर चुके हैं।
उत्तर के लिए धन्यवाद। एक और सवाल: क्या आप अपने उत्तर में बिंदु 3 के बारे में अधिक जानकारी दे सकते हैं? वर्तमान में मैं सत्र प्रबंधन के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन का उपयोग कर रहा हूं। मेरे पास php.ini पर कोई नियंत्रण नहीं है क्योंकि यह एक साझा सर्वर है, इसलिए मैं session.gc_maxlifetime को संशोधित नहीं कर सकता। मैं सत्रों को संग्रहीत करने और प्रत्येक सत्र के जीवनकाल को स्वतंत्र रूप से नियंत्रित करने के लिए डेटाबेस का उपयोग करने के बारे में सोच रहा हूं (मुझे याद रखने के विकल्प का उपयोग करके)। स्पष्टीकरण के लिए – Songo
धन्यवाद। आपने मुझे खुश कर दिया :) – Songo