session_start() blokuje načítání

Terka04
Člen | 44
+
0
-

Ahoj,
řeším velmi pomalé načítání webu dělané v Nette. Zrychlila jsem vše, co jsem dokázala vyprofilovat s debugger time, ale po instalaci Blackfire už vidím, kde to ještě blokuje.

Načítání webu s laděnkou – cca 8 vteřin
Načítání webu s vypnutou laděnkou – cca 2 vteřiny

Na co jsem přišla:

  1. Vykreslování blokuje laděnka – ok, dělalo to maxDepth: 10 a maxLength: 1500 (vyřešeno)
  2. Vykreslování blokuje příliš dlouhý proces dotazu do databáze (to si vyladím, nebude problém)
  3. Vykreslování blokuje session_start

Nemám jasno, proč, nebo jak opravit session_start, který trvá třeba i 3 vteřiny, někdy půl. Jak, nebo kam se podívát ohledně session? Když jsem zkoušela zmeřit přímo session_start, vyšlo mi „0.00012397766113281 s“

try {
// session_start returns false on failure only sometimes
$start = microtime(true);
Nette\Utils\Callback::invokeSafe('session_start', [['read_and_close' => $this->readAndClose]], function (string $message) use (&$e): void {
 $e = new Nette\InvalidStateException($message);
});
$time_elapsed_secs = microtime(true) - $start;
var_dump( $time_elapsed_secs); die();
} catch (\Exception $e) {
}

Sessions zapínám v common.neon

session:
	expiration: "14 days"
	autoStart: true

Blackfire screen: https://ibb.co/mRYsw1Y

Děkuji všem za případnou pomoc a nasměrování. :)

Edit: PHP 7.4, Nette 3.0

Editoval Terka04 (6. 1. 2022 19:25)