2014-09-27 8 views
17

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

उत्तर

20

अपने php.ini की जाँच करें, यह session.gc_maxlifetime के लिए एक मूल्य है (और भी session.cookie_lifetime) जो इस बात पर एक सीमा निर्धारित करता है कि PHP कितने समय तक सत्रों को अंतिम रूप देने की अनुमति देगा। जब लैरावेल विकल्प सेट करता है, तो यह को app/config/session.php में मान सेट के रूप में पास करता है।

हालांकि, अधिकतम जीवनकाल तक पहुंचने के तुरंत बाद सत्र समाप्त नहीं हो जाते हैं। क्या होता है कि समय बीतने के बाद सत्र को कचरा कलेक्टर द्वारा हटाया जा सकता है।

मुद्दा

एक वैकल्पिक हल अपने php.ini फ़ाइल की जाँच करने के लिए है हल करने के लिए। आपके पास यह चर परिभाषित हो सकता है: session.gc_maxlifetime। डिफ़ॉल्ट रूप से यह 1440 पर सेट है। बस इसे पर टिप्पणी या हटाएं।

इस समय से सत्र आपके session.php कॉन्फ़िगरेशन मानों का उपयोग करके ठीक से काम कर सकता है।

5

App\Config\Session.php

जांच ...

आप भी सेट कर सकते हैं ...

Cookie::make('name', 'value', 60); // 1 hr 
34

app/config/session.php में आप हैं:

lifetime

विकल्प है कि आप सत्र निर्धारित करने की अनुमति मिनट में समय (सेकंड में नहीं) की समय सीमा समाप्त

'lifetime' => 60, 

मतलब यह है कि सत्र एक बाद समाप्त हो जाएगा घंटे।

वहाँ भी यहाँ एक और सेटिंग है:

'expire_on_close' => true, 

अगर सत्र समाप्त हो जाएगा जब ब्राउज़र बंद कर दिया जाएगा फैसला करता है कि।

session.cookie_lifetime = 0 

और

session.gc_maxlifetime = 1440 

उन मूलभूत मूल्यों हैं:

अन्य सेटिंग्स आप रुचि रखते हो सकता है भी की php.ini मूल्यों है।

पहला मतलब है कि सत्र कुकी कितनी देर तक संग्रहीत की जाएगी - डिफ़ॉल्ट मान 0 है (ब्राउज़ बंद होने तक)। दूसरा विकल्प का मतलब है कि सेकंड PHP इस सत्र डेटा को नष्ट कर सकता है।

मैंने कहा क्योंकि session.gc_probabilityphp.ini फ़ाइल में एक अन्य विकल्प है जो तय करता है कि कचरा कलेक्टर चलाने का क्या मौका है। डिफ़ॉल्ट बनें केवल 1% मौका है कि 1440 सेकंड (24 मिनट) के बाद इस सत्र डेटा को नष्ट कर दिया जाएगा।

+2

को यह के पहले भाग native सत्र चालक बराबर होने के बारे में टिप्पणी को देखने के लिए (आजीवन और expire_on_close) सही है; बाकी नहीं है। –

8

नेटिव PHP सत्र समर्थन Laravel 4,1

में शुरू होने वाले कॉन्फ़िगर सत्र जीवन संपादित app/config/session.php करने के लिए और सेट निम्नलिखित हटा दिया गया था:

/* if this is set to 'native' it will use file. 
    if this is set to 'array' sessions will not persist across requests 
    effectively expiring them immediately. 
*/ 
'driver' => 'file' 

/* number of minutes after which the session is available for Laravel's 
    built in garbage collection. 
    Prior to 4.1 you could set this to zero to expire sessions when 
    the browser closes. See the next option below. 
*/ 
'lifetime' => 60 

/* If true sessions will expire when the user closes the browser. 
    This effectively ignores your lifetime setting above. 
    Set to false if you want Laravel to respect the lifetime value. 
    If your config file was written before 4.1 you need to add this. 
*/ 
'expire_on_close' => false, 

संदर्भ:

  • Discussion of why native PHP sessions were dropped
  • Other Laravel session drivers
  • Addition of expire_on_close config option 4,1 अपग्रेड मार्गदर्शिका के लिए Laravel 4.0 में चर्चा (क्योंकि यह स्वचालित रूप से हेडर को कुकी जानकारी जो बहुत काम चौखटे के आसपास पाने के लिए करता है, तो वे पूरी तरह से अनुरोध/प्रतिक्रिया रैप करने के लिए चाहते हैं की आवश्यकता है कहते हैं)

भागो artisan changes 4.1.* आदेश पंक्ति पर file

$ artisan changes 4.1.* | grep -i native 
-> Native session driver has been replaced by 'file'. Specifying 'native' driver will just use the new file driver. 
संबंधित मुद्दे