Příliš brzké volání session_start
- vrana
- Člen | 131
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
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
Není lepší dát session_set_save_handler do bootstrapu před $application->run() ?
- Filip Procházka
- Moderator | 4668
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?