Jak nastavit expiraci sessiony?
- josef.sabl
- Člen | 153
Ať dám tenhle kód kamkoli do bootstrapu, klidně hned na začátek po includnutí samotného Nette:
Nette\Environment::getSession()->setExpiration('+ 2 days', false);
Pořád dostávám:
Unable to set 'session.gc_maxlifetime' to value '172800' when session has been started.
Co dělám špatně?
- josef.sabl
- Člen | 153
Tak do toho pánové civím a vypadá to na nějaký divný bug v Nette nebo někde jinde? Jde o řádek 452 v souboru Session.php.
if (defined('SID')) {
SID je definováno, nicméně prázdné, takže …
if (defined('SID') && SID === null) {
zcela řeší můj problém.
Editoval josef.sabl (5. 12. 2012 17:36)
- MartinitCZ
- Člen | 580
Nepoužívej Environment a koukni do dokumentace.
Editoval martinit (5. 12. 2012 17:38)
- josef.sabl
- Člen | 153
Máš na mysli:
$container->session->setExpiration('+ 2 days', false);
Stejný problém…
Tak jsem to původně měl a k Environment jsem se uchýlil v rámci prvních snah o vyřešení mého problému.
Editoval josef.sabl (5. 12. 2012 17:49)
- josef.sabl
- Člen | 153
Geniální, díky, škoda, že se o tom nepíše v dokumentaci :-)
Btw, má potom funkce setExpiration() nějaký význam?
- ViPEr*CZ*
- Člen | 817
josef.sabl napsal(a):
Geniální, díky, škoda, že se o tom nepíše v dokumentaci :-)
Btw, má potom funkce setExpiration() nějaký význam?
Myslím, že to je v sandboxu, ze kterého je dobré vždy vycházet. V dokumentaci to někde možná taky je… proč nejde ta funkce nevím… musí odpovědět někdo kompetentnější. ;-)
- josef.sabl
- Člen | 153
Jasný, to bylo zase jenom takové přátelské rýpnutí do stavu dokumentace Nette :)
Vím, že bych mohl sám přiložit ruku k dílu, ale asi na to zatím nemám.
Btw, sám jsem pak v neonu našel, že tam mám expiration: 0, ale když prostě nevíš, že to tam je, tak to nenajdeš a když se v ofiko dokumentaci píše, že se to dělá jinak, tak prostě tě to nenapadne a hledáš, kde máš chybu :)
- josef.sabl
- Člen | 153
ViPErCZ napsal(a):
Dejte si to do config.neon:
nette: session: autoStart: smart expiration: +365days
Můžu doplňující dotaz? A jak zajistit, aby sessiona neexpirovala při vypnutí prohlížeče?
EDIT: Už jsem na to přišel :)
nette:
session:
autoStart: smart
expiration: +2days
cookieLifetime: +2days
Editoval josef.sabl (12. 12. 2012 9:21)
- Aurielle
- Člen | 1281
ViPErCZ napsal(a):
Dejte si to do config.neon:
nette: session: autoStart: smart expiration: +365days
Zjistil jsem, že dávat roční expiraci je u aplikace s větším počtem uživatelů overkill. Pak máš nechutný počet sessionů v tempu a u nás na serveru to nebyl bash schopen ani vylistovat (tzn. rm -rf vracelo chybu).