Debugger time – přiřazení hodnoty trvá 0.6 sekund

Terka04
Člen | 44
+
0
-

Dobrý den všem,
omlouvám se za velice hloupou otázku, ale setkávám se na jednom projektu s chybou a tou, že načítání trvá velice dlouho. Nasadila jsem si tedy breakpointy přes Debugger::timer($name); avšak hromadu částí jsem vyřešila. Nicméně stále zůstává otevřený případ, že mi v jednom souboru trvá něco dlouho. Obalila jsem ho značkami a přišla jsem na to, že tento příkaz trvá více, než půl vteřiny (někdy i 3/4 vteřiny).

Debugger::timer("breakpoint-A");
$this->template->admin_popup_id = "20201219"; // Toto trvá 0.5 - 1 sekundu
$vysledek = Debugger::timer("breakpoint-A");

Je to hned na začátku souboru, zbytek už je pak bleskový.

Chci se zeptat – proč? Nic jiného na tom řádku nemám. Napadá mě jen to, že by tomu mohlo vadit, že $this->template volám v BasePresenteru v metodě startup(). Těhle $this->template mám ve stejném souboru více, jen tento je první. Má to nějakou souvislost?

Děkuji všem za nakupnutí.

Edit: Když ten řádek přesunu někam jinam, je vykonaný „bleskurychle“ a zásek nastane u jiného $this->template. Tedy usuzuji, že se to zasekne tedy vždy na úplně prvním $this->template na který to narazí.

Editoval Terka04 (9. 9. 2021 13:51)

Polki
Člen | 553
+
0
-

Ahoj, ano vždy se ti to stane u prvního $this->template a to proto, že při prvním zavolání se volá templateFactory a teprve se vytváří šablona jako taková. Můj tip je, že buď ty, nebo někdo před tebou kdo dělal na tom projektu nějak upravil templateFactory a ta to brzdí.

Zkus aktualizovat Nette přes composer. (Udělej si ale předtím zálohu, ať si něco nerozbiješ :D )
Kdyby bylo třeba, napiš mi na mail přes můj profil a projdeme to podrobně.

Marek Bartoš
Nette Blogger | 1165
+
0
-

Obecně vzato, pokud je něco pomalé, tak ti pomůže Blackfire. Jen jej nainstaluješ, přidáš plugin do prohlížeče a na stránce kterou chceš profilovat v pluginu klikneš na Profile a za okamžik uvidíš graf s kompletním přehledem, co se dělo. Velkou část requestu při vývoji zabere debugger a autoloader, doporučuju tak před profilováním debugger vypnout a spustit composer install --no-dev --classmap-authoritative, aby byl výpis přehlednější.
https://blackfire.io/…installation

Jinak jak píše Polki, při prvním přístupu k $this->template se vytváří šablona, nejspíš je tedy pomalá TemplateFactory. Žádná proměnná $this->template totiž v presenteru/komponentě není, jde o magii traity SmartObject, která ví, že když je nad třídou anotace @property Example $template, tak má zavolat $this->getTemplate()

Polki
Člen | 553
+
0
-

@MarekBartoš mohli bychom někde projít instalaci Blackfire? Já to zkoušel a zamotal jsem se do toho. Nebo máš někde nějaký cool návod?

Michal Hlávka
Člen | 190
+
0
-

Polki napsal(a):

@MarekBartoš mohli bychom někde projít instalaci Blackfire? Já to zkoušel a zamotal jsem se do toho. Nebo máš někde nějaký cool návod?

https://www.youtube.com/watch?…

Polki
Člen | 553
+
0
-

@MichalHlávka Díky jsi borec.

Terka04
Člen | 44
+
0
-

Dobrý den,
děkuji všem za odpověď. K Blackfire jsem se nedostala, protože je to placená služba a ne zrovna levná. :/ Nicméně pokud je to asi tím, že někdo předělával templateFactory, musela jsem to být já a vůbec netuším, kde jsem co mohla pokazit. Nevím o tom, že bych do něčeho takového sahala. :O Mohl by mě někdo navést, kde hledat, prosím? :)

Marek Bartoš
Nette Blogger | 1165
+
+2
-

K Blackfire jsem se nedostala, protože je to placená služba a ne zrovna levná. :/

Základní funkce jsou zdarma a v podstatě vše, co potřebuješ :) Na stránce s pricingem informace o tom najdeš pod klíčem „Hack“ https://www.blackfire.io/pricing

Polki
Člen | 553
+
0
-

@MarekBartoš Jsi si jistý, že to na hack verzi funguje?
zřídil jsem si to, nainstaloval podle návodu, vše ok, ale když zkusím profiling zapnout, píše to vždy

ERROR     blackfire The Blackfire API answered with a 401 HTTP error ()

  Error retrieving environments: The Blackfire API rejected your credentials.

Zkoušel jsem i přegenerovat a přenastavit credentials, ale stejně to neběží…
Koukal jsem na net a stejný problém má tuna lidí, ale nikde není řešení.

Editoval Polki (11. 9. 2021 13:02)

Marek Bartoš
Nette Blogger | 1165
+
0
-

Instaloval jsem podle návodu a bez problémů. V mém případě na WSL. Běží tvůj web na localhostu? V podmínkách Hack verze je, že se spustí pouze na localhostu. Krom toho by mohla dělat problém ještě chybějící env proměnná HOME, jinak by ti imho mělo stačit jít přesně podle návodu. A nezapomenout se přihlásit, v návodu se pak objeví skutečné údaje namísto placeholderů.

Polki
Člen | 553
+
0
-

Super. Bylo to tím, že jsem instaloval server verzi.
Dík.