Tôi thấy một số hành vi kỳ lạ và bực dọc với phiên ZF2 và thời gian chờ.Zend Session SessionManager và cookie_lifetime
Dưới đây là đoạn code tôi sử dụng để thiết lập phiên:
$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);
Khi tôi thực thi mã này, cookie được tạo ra nhưng khi hết thời hạn là cuối phiên.
Nếu tôi thay đổi mã như thế này:
$sessionManager = new \Zend\Session\SessionManager();
$sessionManager->rememberMe(31536000);
$sessionManager->setConfig($sessionConfig);
$session = new \Zend\Session\Container('MY_SESSION', $sessionManager);
cookie được tạo ra và kết thúc thời hạn là một năm kể từ bây giờ.
Tuy nhiên, phiên vẫn hết hạn sau 30 phút hoặc lâu hơn, mặc dù cookie vẫn còn.
Điều tôi muốn là cho cả cookie và phiên tồn tại trong một năm. Làm thế nào để thực hiện điều này trong ZF2?
Sử dụng '\ Zend \ Session \ Config \ SessionConfig', không phải' StandardConfig' – Crisp
Khi tôi sử dụng SessionConfig với các tùy chọn tương tự như trên, cookie PHPSESSID không được ghi. Tôi đang thiếu gì? – ebeyrent
Các tùy chọn ở trên cho biết phiên 'tên' của' mydomain'? – Crisp