ako pouzit session s php session.gc_maxlifetime?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
PeterK
Člen | 1
+
0
-

Hi

problem:

  • v php.ini je default session.gc_maxlifetime = 1440
  • config.neon ma default session: expiration: 14 days
  • v kode je pouzite this->getUser()->setExpiration(‚+ 1 days‘)

Prihlasenie usera vydrzi iba tych 24 minut (1440 sec). Nette by mal na to hadzat notice podla \vendor\nette\http\src\Http\SessionSection.php

$time = Nette\Utils\DateTime::from($time)->format('U');
$max = (int) ini_get('session.gc_maxlifetime');
if ($max !== 0 && ($time - time() > $max + 3)) { // 0 - unlimited in memcache handler, 3 - bulgarian constant
				trigger_error("The expiration time is greater than the session expiration $max seconds");
}

lenze ini_get(‚session.gc_maxlifetime‘) vracia 1209600, co je 14 dni, co je default hodnota v config.neon, ale nie hodnota v php.ini.

Otazka je, preco nette vracia 14 dni a nie aktualnu hodnotu z php.ini?

dik

David Matějka
Moderator | 6445
+
0
-

ta hodnota z configu zmeni session.gc_maxlifetime (pokud to je povoleno).. to, ze se to maze, muze byt zpusobeno necim jinym, viz https://play.nette.org/…nych-session

newPOPE
Člen | 648
+
+1
-

Tiez sme s tym mali problem. Riesenie bolo zmenit php.ini nie pomocou configu na max hodnotu ktoru sme potrebovali.

Skus si dat cat /etc/cron.d/php5. Ja tam mam defaultne nieco taketo 09,39 * * * * root [ -x /usr/lib/php5/sessionclean ] && /usr/lib/php5/sessionclean tym padom si myslim, ze Ti to tych 14 dni ignoruje resp. tie sa nastavia len ked je PHP spustene cez web server.

Milo
Nette Core | 1283
+
0
-

Jak píše @newPOPE PHP ma v distribuci cron script, který periodicky maže sessions podle expirace v php.ini.

Nejsnazší je ukládat sessions do jiného adresáře. Dávám je k aplikaci. V config.neon:

session:
	savePath: ...