Příliš brzké volání session_start

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

Chci ukládat session data do databáze. Když ale zavolám session_set_save_handler v $application->onStartup, tak už je to pozdě, protože tou dobou už je session nastartovaná. Když se k databázi připojím a handler nastavím už v bootstrap.php, tak se Nette nepostará o ošetření chyb, ke kterým při připojování k databázi může dojít.

Řešením by bylo posunout $session->start dále v kódu $application->run (až za $this->onStartup), ale nejsem schopen dohlédnout, jaké problémy by to způsobilo.

Filip Procházka
Moderator | 4668
+
0
-

AFAIK by to nemělo ovlivnit nic víc, než metody volané programátorem v onStartup, které pracují se session.

Co bych navrhoval spíš tak přidat přepínátko.

https://github.com/…lication.php#L71

$session = $this->getSession();
if (!$session->isStarted() && $session->exists() && $this->sessionAutostart === TRUE) {
	$session->start();
}
David Grudl
Nette Core | 8218
+
0
-

Není lepší dát session_set_save_handler do bootstrapu před $application->run() ?

Filip Procházka
Moderator | 4668
+
0
-

Ale Jakubovi jde o to, že když to dá do bootstrap, tak se o případné chyby nepostará Nette životní cyklus, ale prostě to umře. Kdyby to bylo později, tak to chytí ten „velký“ try a zobrazí se chybová stránka Nette, nebo se pletu?

David Grudl
Nette Core | 8218
+
0
-

Jasně, rozumím – autostart jsem dal za onStartup.