Debugger time – přiřazení hodnoty trvá 0.6 sekund
- Terka04
- Člen | 44
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
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 | 1280
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()
- Michal Hlávka
- Člen | 190
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?
- Terka04
- Člen | 44
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 | 1280
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
@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 | 1280
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ů.