2013-05-15 6 views
5

मुझे ज़ेड 2 सत्र और टाइमआउट के साथ कुछ अजीब और निराशाजनक व्यवहार दिखाई दे रहा है।ज़ेंड सत्र सत्र प्रबंधक और कुकी_लिफ़टाइम

यहाँ कोड मैं सत्र सेट करने के लिए उपयोग:

$sessionConfig = new \Zend\Session\Config\StandardConfig(); 
    $sessionConfig->setOptions(array(
     'cache_expire' => 525949, 
     'cookie_domain' => 'mydomain.com', 
     'cookie_lifetime' => 31536000, 
     'cookie_path' => '/', 
     'cookie_secure' => TRUE, 
     'gc_maxlifetime' => 31536000, 
     'name' => 'mydomain', 
     'remember_me_seconds' => 31536000, 
     'use_cookies' => TRUE, 
    )); 

    $sessionManager = new \Zend\Session\SessionManager($sessionConfig); 
    $sessionManager->rememberMe(31536000); 
    $sessionManager->setSaveHandler(new \Zend\Session\SaveHandler\MongoDB($mongo, $options); 
    $session = new \Zend\Session\Container('MY_SESSION', $sessionManager); 

मुझे इस कोड को निष्पादित, कुकी बनाया जाता है लेकिन समाप्ति सत्र के अंत है।

अगर मैं इस तरह कोड बदलने के लिए:

$sessionManager = new \Zend\Session\SessionManager(); 
    $sessionManager->rememberMe(31536000); 
    $sessionManager->setConfig($sessionConfig); 
    $session = new \Zend\Session\Container('MY_SESSION', $sessionManager); 

कुकी बनाया जाता है और समाप्ति अब से एक साल है।

हालांकि, सत्र अभी भी 30 मिनट या उसके बाद समाप्त हो जाता है, भले ही कुकी बनी हुई हो।

मैं चाहता हूं कि कुकी और सत्र दोनों एक साल तक बने रहें। मैं इसे ZF2 में कैसे पूरा करूं?

+3

उपयोग '\ Zend \ सत्र \ Config \ SessionConfig',' StandardConfig' – Crisp

+0

जब मैं उपर दिए गए विकल्पों के साथ SessionConfig उपयोग करते हैं, PHPSESSID कुकी लिखा नहीं होता है नहीं। मैं क्या खो रहा हूँ? – ebeyrent

+0

उपर्युक्त विकल्प 'mydomain' का सत्र' नाम 'इंगित करते हैं? – Crisp

उत्तर

3

ऐसा लगता है कि समस्या को gc_maxlifetime विकल्प के संचालन के साथ करना है। \ Zend \ सत्र \ SaveHandler \ MongoDB में, यह मान PHP कॉन्फ़िगरेशन से लिया जाता है, ini_get ('session.gc_maxlifetime') के माध्यम से;

मुझे \ Zend \ सत्र \ सत्र प्रबंधक में कहीं भी नहीं दिखाई देता है जहां ini_set() कहा जा रहा है।

समाधान, मुझे लगता है, तो निम्न में से एक कार्य करने के लिए है:

  1. php.ini संपादित विश्व स्तर पर
  2. .htaccess
  3. संपादित करें और सेट मूल्य और जोड़ने php_value session.gc_maxlifetime
  4. बढ़ाएँ \ Zend \ सत्र \ सत्र प्रबंधक और एक नई विधि जोड़ें जो ini_set() को कॉल करती है यदि gc_maxlifetime विकल्प प्रदान किया जाता है।
+4

'ini_set' को 'सत्र कॉन्फिग' वर्ग द्वारा बुलाया जाता है, कुछ भी संपादित करने की आवश्यकता नहीं है, ओप को सही कक्षा का उपयोग करने की आवश्यकता है। – Crisp