Nette\Database\Context a cache

caracho
Člen | 3
+
0
-

Zdědil jsem celkem jednoduchou webaplikaci psanou v nette, jejímž úkolem je prezentovat pár ze vzdáleného vnitrofiremního informačního systému (přes sqlsrv).
Bohužel byla psaná v nějaké starší verzí nette a tak po instalaci na nový stroj s PHP7, jsem musel nette upgradovat.
Většina změn se mi podařila vyřešit, ale teď zápasím s následujícím:

Téměř jakýkoliv přístup k aplikaci strašně dlouho trvá – když jsem začal zjištovat proč, tak se ukázalo, že to visí na sqlsrv připojení k informačnímu systému a každý požadavek na Nette\Database\Context vyvolá nové stahování struktury db a její rebuild (jedná se o desítky, možná stovky tabulek a pohledů).

Co tohle podivné chování může způsobovat? Dá se to někde přenastavit/vypnout?
Díky za podněty.

CZechBoY
Člen | 3608
+
0
-

Generuje a ukládá se ti cache? Mrkni jestli není složka temp/cache nějak moc prázdná.

caracho
Člen | 3
+
0
-

Nějakou cache si to udělá v […]/temp/cache/_Nette.Database.Structure… a asi i dobře, když někeré přístupy odpoví okamžitě, nekteré ale trvají a podle všeho (datum toho serializovanho souboru se strukturou ) si to zas tahá znova.

CZechBoY
Člen | 3608
+
0
-

hm, těžko říct… zkus zdebugovat kdy se volá Nette\Database\Structure::loadStructure – můžeš tam hodit třeba throw new Exception a ve stack trace si to už asi najdeš.

IJVo
Člen | 38
+
0
-

@caracho patrně máš něco špatně v návrhu, když se do vnitrofiremního informačního systému dostaneš z venku na všechna data. Asi by to chtělo na tom sqlsrv udělat nějakého uživatele a tomu nastavit přístup jen k nějakým pohledům (nebo pro něj udělat speciální pohledy), které chceš prezentovat venku na webu. Pokud tam nepotřebuješ dělat z venku i nějaké změny.

caracho
Člen | 3
+
0
-

Kdybych vedel kolik tim zabiju casu, tak jsem to mel za tu dobu 2× naprogramovany (10× rychlejsi a s 10× mensi spotrebou pameti…). Nakonec jsem si udelal zbabele LXC kontejner s php5, kde to nejak jede v puvodnim stavu. (I kdyz taky zadna slava, puvodni autor mel libustky typu nechat vratit si cely obsah 10.000+ radkove tabulky aby z ni pak ukazal 12 radku…). Anyway, dik za rady.