Diskuze: Načtení dat, pouze jednou
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 14 zpráv z 14.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zdar,
jen moc nechápu to, že tu proměnnou přepíšeš. Když jí nastavíš
hodnotu v souboru start.php, kde tu proměnnou znova nastavuješ?
Vlastně já ji nepřepisuji. Jen jsem myslel, že když vkládám start.php, tak se vždy znova vytvoří proměnná, takže bude prázdná a budu opět načítat data.
http://php.net/…ire-once.php
Tohle ti načte soubor pouze jednou. moc nechápu, jakým způsobem to myslíš.
Při každém požadavku od klienta musíš znovu vytvářet Osoby, takže
nevím jakým způsobem myslíš, že ji přepisuješ.
Eventuelně můžeš použít isset($osoby) jako podmínku, jestli vytvářet
osoby nové. Pokud již proměnná s takovým názvem existuje, tak funkce
vrátí true.
Myslím si, že mu jde o něco podobné na způsob keše. Nechce to vypisovat vždy/číst data z db když znovu načteš stránku.
adder: Chápu-li to správně, tak si při načtení vytvoř dočasný soubor, tam přepiš data, které chceš vypsat a po nějaké době (hodinka, den) smaž a potom si jej vytvoř znovu.
Problém je v tom, že když dám následující kód, tak se to dostane to větve 'načtení databáze' i přesto, že už jsem je na jiné stránce načítal.
if(!isset($cars))
$cars = new Cars();
if($cars->isEmpty()) {
// ... načtení dat
}
Mara: Ano. něco na ten způsob. A nejde to jen uchovávat v proměnné?
Co třeba sešna (session, ty se vlastně také uchovávají dočasně na serveru), jaká je velikost dat, odhadem?
Ne, do proměnné uchovávat informace nemůžeš, protože při dotazu se zachytí požadavek a po jeho splnění se zase vše dá zpět do původního stavu (zjednodušeně řečeno). Pokud data, které z databáze načítáš, dále nijak neupravuješ (že bys nad nimi dělal nějakou časově náročnou operaci) a není výstup individuální pro každého uživatele (tedy že všichni uživatelé uvidí to stejné, nebo prakticky to stejné), zůstal bych u databáze. Nějaký cachovací systém bych tam nedával, ona ta databáze dokáže být v některých případech i rychlejší, než kdybys data byť jen jednoduše četl ze souboru.
To jsem zkoušel, ale přijde mi to prasácký a ani mi to nešlo. Je to externí XML soubor a nynější, který používám má 164kB, ale může se lišit (data do souboru jsou generována jiným zdrojem).
Jde jen o to, že jsem to nechtěl pořád načítat celé. Když mám např. stránku kontakt, kde nepotřebuji vůbec načítat databázi, tak to zpomaluje (alespoň se mi to zdá). Nebo další stránky, kde chci jen 4 objekty z databáze.
adder Hmm, tak to bude špatný návrh třídy kde provádíš výpis. Resp. proč děláš výpis tam kde ho nepotřebuješ?
Tak proč to načítáš na stránce kde máš kontakt, když to tam nepotřebuješ?
Zobrazeno 14 zpráv z 14.