ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
PHP knihovny - Smarty VI.Tento díl o Smarty šablonách bude o práci s cache a konfiguračními soubory webové aplikace. CachePoužitím cache lze velice odlehčit zatížení Apache serveru při zobrazování stránek, je však třeba postupovati s nejvyšší obezřetností, protože špatné nastavení může snadno způsobit, že budou zobrazovány již neplatné stránky. Například stránka s kontakty a dalšími informacemi, které jsou modifikovány jednou za velice dlouhý čas může mít životnost cache v minutách, ale stránky zobrazující například články a komentáře by měly mít životnost nepoměrně kratší, případně po přidání komentáře, nebo aktualizaci databáze článků vymazat stávající cachované soubory.Různé části stránky mohou mít životnost cache souborů nastavenu na různou dobu. Výjimku tvoří části stránek vložené pomocí Smarty funkce insert, které se necacheují, což lze využít například k vložení částí s anketami, nebo bannery, které je třeba necacheovat. Nastavení cacheK nastavení možnosti používat cache je třeba provést několika nastavení na straně Smarty. Je možné tato nastavení provést buď přímým zásahem do souboru Smarty.class.php, nebo je zadat při vytváření třídy ve scriptu. Aby byla objasněna i tato druhá možnost, která je použitelná pro konfiguraci libovolnýchparametrů za běhu scriptu, bude zde použita právě tato metoda. Ti kteří preferují přímé nastavení v hlavní třídě si mohou vlastnosti najít a modifikovat. Pro použití cache je nutné nejprve nastavit proměnnou třídy Smarty (toto nastavení bude pravděpodobně nejlepší provést přímo v souboru Smarty.class.php) $cache_dir, která ukazuje na adresář do kterého budou ukládány cacheované soubory. Pro tento adresář je nutné nastavit práva tak, aby do něj mohl zapisovat web/php server. Soubory do adresáře pro cache jsou ukádány s koncovkou .php a podobným jménem, jako zkompilované soubory do $compile_dir. Nejedná se o spustitelné scripty a není doporučena jejich ruční editace. Prvotní nastavení pro použití je proměnná třídy Smarty, která se jmenuje caching, je typu Integer, s hodnotami v rozsahu 0-2 a následujícím významem:
$page->caching=2 .Při použití třetí varianty ($page->caching=2) je bráno v potaz nastavení vlastnosti $cache_lifetime ze scriptu, zobrazující, nebo odchycující do proměnné, obsah šablony. Proměnná $cache_lifetime má výchozí hodnotu nastavenu na 3600 sekund (neboli jednu hodinu), nastavení života cache pro stránku například na 10 minut se realizuje pomocí přiřazení $page->cache_lifetime=600 .Použití cachePo základním nastavení je možné začít používat cacheování obsahu tvořeného pomocí Smarty šablonovacího systému. Použití je velmi jednoduché a má poměrně rozsáhlé možnosti, od ponechání automatického generování cache pouze v závislosti na nastavení délky života cacheovaných souborů v konfiguraci, až po různou životnost chache a jejich regeneraci/mazání v závislosti na uložení textů či komentářů v redakčním systému.Většinová praxe je taková, že jeden script (+ šablona) zobrazuje data získaná z databáze, například artdetail.php (+ fe_artdetail.tpl (protože mám pro šablony jeden adresář, rozlišuji prefixem 'fe_', frontend, uživatelskou a 'adm_', administrátorské, šablony)), lze pro funkce display() a fetch()
použít přídavný parametr (cache_id), který umožní rozlišit, pro které
identifikátory je třeba nacacheovaný soubor smazat. Jedná se o
nepovinný parametr metody, na staně PHP scriptu, řetězcového typu. Jako
vhodný identifikátor se jeví například databázové id článku. Zobrazení
šablony s komentáři k článku s jedinečným identifikátorem id může poté vypadat například takto:
$page->cache_lifetime = 600;
V tomto minipříkládku je použito vložení dvou cacheovaných šablon do
sebe, přičěmž pro šablonu 'fe_page.tpl' lze mít cache nastavenu na
velice dlouhou životnost (v příkladu je to 1 den), protože určuje
layout stránky a ten se často nemění.$output=$page->fetch('fe_comments.tpl',$_GET['id']); $page->cache_lifetime=86400; $page->display('fe_page.tpl'); Pro vytvoření cacheovaných šablon není třeba žádné funkce, stačí nastavit několik proměnných a šablonovací systém se postará o zbytek potřebných operací sám. O smazání (ať selektivní, nebo centrální) se musí programátor starat sám, mimo případu, kdy vyprší životnost cacheovaného souboru. Ke smazání všech nacacheovaných souborů slouží PHP metoda clear_all_cache(), který má jeden nepovinný parametr, jímž lze určit minimální stáří souboru v sekundách. Tato varianta může posloužit v případě velkého množství změn ve webové aplikaci, v naprosté většině ostatních případů bude použitelné selektivní mazání. Smazání všech nacacheovaných souborů starších 30 sekund se realizuje takto:
$page->clear_all_cache(30);
K selektivnímu mazání souborů slouží metoda šablony clear_cache, která má následující parametry:
if(!$page->is_cached("fe_index.tpl")) {
Předchozí funkce umožňují sgrupování/seskupení při ověřování a mazání
cache souborů pro jednu šablonu použitím identifikátoru šablony při
generování pomocí fetch() a display().
Grupování se realizuje buď pomocí operátoru '|' mezi jednotlivými
cache_id, nebo nebo neuvedením názvu šablony, ale pouze cache_id.
Nepoužití názvu šablony a čištení cache jen pomocí cache_id bude
použitelnější, pokud je použito nějaké jméno místo id v databázi.
Příklady na seskupování://ziskani dat z databaze a jejich nasledne zpracovani } $page->cache_lifetime=600; $output=$page->display("fe_index.tpl"); $page->cache_fifetime=86400; $page->display("fe_page.tpl")
//smazání všech cache souborů s cache_id=='lcd' nebo cache_id=='crt'
Další proměnnou užitečnou pro práci s cache pamětí je $compile_check,
jenž zajišťuje při každé změně v šabloně, či konfiguračním souboru
šablony (viz další text) bude příslušný soubor v cache znovu
vygenerován. Nastavení této hodnoty na True
bude použitelné nejvíce při vývoji aplikace, protože v praxi i toto
testování znamená nějakou ztrátu času a mohlo by být značně výkonově
nevýhodné.$page->clear_cache(null,'lcd|crt'); //smázání cache článků s cache_id=='lcd' nebo cache_id=='crt' $page->clear_cache('fe_artdetail.tpl','lcd|crt') Konfigurační souboryKaždý kdo pracuje na větším projektu nebo už má za sebou nějakou praxi ví, že konfigurace je vhodnější uložit si na jedno místo, do jednoho souboru, než nastavení (například přístupu do SQL serveru) cyklicky vypisovat do scriptu, ze kterého tu kterou službu použijete. I Smarty šablony lze konfigurovat, soubory k tomuto používané jsou samozřejmě čitelné a zpracovatelné jak na straně Smarty šablony, tak na straně PHP scriptu, ze které je zobrazení této šablony voláno.Konfigurační soubory se ukládají do adresáře učeného vlastností $config_dir třídy $Smarty.class.php. Mohou obsahovat konstanty viditelné ve všech scriptech a šablonách, konstanty viditelné jen z určité šablony a tzv. skryté konstanty a sekce. Mají doporučenou strukturu, která vypadá například takto: # Komentář se ukládá za znak #
Struktura souboru je zřejmá. Vše před prvním znakem je dostupné ze
všech šablon, kam je konfigurační soubor vložen. Jednotlivé sekce
začínají názvy sekcí vloženými do hranatých závorek a vše až do názvu
další sekce je přiřazeno k té aktuální. Sekce, nebo konstanty, jejichž
názvy začínají znakem '.' (tečka) jsou považovány za skryté, tj. pokud
není vlastnost $config_read_hidden nastavena na True, jsou tyto
proměnné v šabloně nedostupné a jsou viditelné pouze ze scriptu, ze
kterého je šablona zobrazena. Konstanty mohou být typů řetězec,
číslo, nebo boolean. Pokud je vlastnost $config_booleanize nastavena na True, jsou konstanty s hodnotami true/on/yes a false/off/no automaticky považovány za typ Boolean s patřičnou hodnotou. # Zde jsou definice proměnných dostupných ve všech stránkách # tzv. globální konfigurační konstanty pageTitle = "Konfigurace Smarty šablony" mainColor = #66ccff alertColor = #ff6666 # skrytá konstanta .build = 0.0.3 # nastavení pro stránku Novinky [News] pageTitle = "Smarty s.r.o. - Novinky" # nastaveni pro stránku Download [Dwn] pageTitle = "Smarty s.r.o. - Stáhněte si" warn = """Pokud potřebujete v konfiguračním souboru napsat text přes několik řádek, musíte jej vložit do trojitých uvoyovek""" # skrytá sekce [.hiddenConst] author = "První webařská a.s." backdoorpwd = "65aa_7vt" Ke vložení konfiguračního souboru do šablony slouží funkce šablony {config_load} s následujícími parametry:
Příklady na načtení konfiguračních souborů:
{* Nacteni pouze konfiguacniho souboru, tj. globalnich konstant*}
//nacteni konfiguracniho souboru na strane PHP scriptu{config_load file='hlavni.conf'} {* Nacteni globalnich konstant i s konstantami sekce *} {config_load file='hlavni.conf' section='news'} $page->config_load('hlavni.conf','news') Ke vložení konstanty s názvem jmeno_const do šablony slouží sekvence {#jmeno_const#} na straně šablony, pokud je třeba pracovat s konstantami na straně PHP scriptu, lze tyto získat do proměnné metodou get_config_vars(), kde je možné buď uvést název konstanty, případně jej neuvést, v tom případě budou konstanty vloženy do pole. Dále je uvedeno několik příkladů s vložením konstanty jednako na straně šablony a druhako získání konstant do proměnných na straně PHP scriptu.
{* Zobrazeni konstanty v sablone *}
Pokud je třeba načíst do scriptu i obsah skrytých konstant a sekcí, je
třeba použít trochu složitější postup, který zde bude uveden jen jako
příklad:{# pageTitle #} //nacteni konstanty do promenne v PHP scriptu $titulek=$page->get_config_vars('pageTitle');
<?php
Jelikož by se zde jednalo o "zbytečné natahování" textu odkáži v tomto případě váženého čtenáře na originální dokumentaci.require_once './../smarty/Config_File.class.php'; $conf = new Config_File('./../configs'); // nacteni promenne author z sekce hiddenConst $author=$conf->get('hlavni.conf", "hiddenConst", "author" ); ?> ZávěremV tomto díle jsem se pokusil čtenáři ukázat především urychlení zobrazování stránek a ulehčení zátěže serveru rozumnou prací s cache a trochu jsme se podívali na možnosti použití konfiguračních souborů v návaznosti na Smarty šablony, dovoluji si na okraj poznamenati, že tento způsob konfigurace nepoužívám.V příštím díle bude lehký úvod do psaní vlastních pluginů využitelných ve Smarty šablonách a poté bude několik dílů věnovaných některým pluginům, které jsem shledal vcelku zajímavými. Celý tento seriál, jak vzniká je pohledem jednoho člověka, co mohu považovat za zajímavé a přínosné já, nemusí se líbit jinému, proto uvítám upozornění na další knihovny, které neznám, ať se s nimi mohu seznámit...
Související články
PHP a SQL - EZ_SQL
PHP a SQL - EZ_SQL (2) PHP Knihovny - Smarty PHP knihovny - Smarty II. PHP knihovny - Smarty III PHP knihovny - Smarty IV PHP knihovny - Smarty V PHP Knihovny - Smarty VII Předchozí Celou kategorii (seriál) Další
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |