2012-02-11 13 views
6

में सत्र मैं यह पता लगाने की कैसे सत्र Codeigniter में काम करते हैं कोशिश कर रहा हूँ। ऑनलाइन मैनुअल पढ़ना, मैं निम्नलिखित देखता हूं:कैसे Codeigniter कार्य

यदि सत्र डेटा मौजूद नहीं है (या यदि यह समाप्त हो गया है) तो एक नया सत्र कुकी में बनाया और सहेजा जाएगा। यदि कोई सत्र मौजूद है, तो इसकी जानकारी अपडेट हो जाएगी और कुकी अपडेट हो जाएगी। प्रत्येक अद्यतन के साथ, session_id पुन: उत्पन्न किया जाएगा।

और

नोट: सत्र कुकी केवल प्रोसेसर भार को कम करने डिफ़ॉल्ट रूप से हर पाँच मिनट अपडेट किया जाता है। यदि आप बार-बार एक पृष्ठ पुनः लोड करते हैं तो आप देखेंगे कि "अंतिम गतिविधि" समय केवल तभी अपडेट होता है जब कुकी को आखिरी बार लिखा गया था। इस बार $ config [ 'sess_time_to_update'] आपके सिस्टम/config/config.php फ़ाइल में लाइन बदलकर विन्यास योग्य है।

प्रश्न:

  1. कौन-सी जानकारी अद्यतन किया जाता है एक सत्र मौजूद रहने पर जब सत्र वर्ग के साथ एक पृष्ठ लोड किया जाता है? क्या यह सत्र आईडी कुकी में संग्रहीत है, या सत्र डेटा स्वयं डेटाबेस में संग्रहीत है?
  2. सत्र कुकी केवल हर 5 मिनट में अपडेट किया जाता है। क्या होगा यदि उपयोगकर्ता पृष्ठ ए से पृष्ठ बी तक 5 मिनट के भीतर जाता है, और इसके लिए नए सत्र डेटा को जोड़ने की आवश्यकता होती है? तार्किक रूप से सत्र डेटा अद्यतन किया जाना चाहिए, इसलिए मुझे लगता है मैं इस लाइन को गलत तरीके से समझने हूँ ... इस मामले में, मुझे लगता है कि सत्र कुकी एक नया सत्र आईडी हर 5 मिनट में हो जाता है लगता है कि होगा।

किसी भी स्पष्टीकरण में मदद मिलेगी!

+0

मैं भी एक भ्रम हो रहा है। और मुझे सीआई 1.7.2 पर एक अजीब व्यवहार कहना चाहिए। जब मैं डीबी प्रकार सत्र अनुप्रयोग का उपयोग ठीक काम करता हूं। लेकिन डीबी प्रकार के झूठे मामले में आवेदन बहुत धीमा हो जाता है। कोई सुझाव? –

उत्तर

2

हाँ, कुकी में संग्रहीत सत्र id के बारे में है। यह हर 5 मिनट में पुनर्जन्मित होता है। और जब इसे पुनर्जीवित करने का समय हो, तो पहले इसे वर्तमान सत्र डेटा मिलेगा और इसे नए सत्र आईडी में असाइन करने से पहले। सीआई सत्र पुस्तकालय, समारोह sess_update() से

कोड:

// Save the old session id so we know which record to 
// update in the database if we need it 
$old_sessid = $this->userdata['session_id']; 
$new_sessid = ''; 
while (strlen($new_sessid) < 32) 
{ 
    $new_sessid .= mt_rand(0, mt_getrandmax()); 
} 

// To make the session ID even more secure we'll combine it with the user's IP 
$new_sessid .= $this->CI->input->ip_address(); 

// Turn it into a hash 
$new_sessid = md5(uniqid($new_sessid, TRUE)); 

// Update the session data in the session data array 
$this->userdata['session_id'] = $new_sessid; 
$this->userdata['last_activity'] = $this->now; 
+0

वास्तव में इस उपयोगी जानकारी के लिए धन्यवाद, और प्रोग्रामिंग के प्यार के लिए SO। –