Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: cachowanie
Forum PHP.pl > Forum > PHP
qbba
Witam.
Ostatnio zainteresowalem sie optymalizacja i pojawilo sie pytanie jak dziala cachowanie i jak to zrobic??
scanner
[php:1:c740db5d12]<?php
// pseudokod
$zmiana= sprawdz_zawartosc(); // lub sprawdz date
if($zmiana){
pobierz_zawartosc_szablonu();
wypelnij_szablon_daymi();
zapisz_wynik();
}
?>[/php:1:c740db5d12]
Tak ja to widze w podstawowym zakresie.
qbba
heh..... a moge poprosic o jakis bliższy opis funkcji?? Bo ja sie nie barzdo orientuje co znaczy co. Chcialbym to zastosowac, ale nie wiem jak.
spenalzo
Przecież pisze, że to pseudokod, czyli taki schemat ideowy...
Po sprawdzeniu odpowiedniego warunku pobierasz szablon, wypełniasz go świeżymi danymi i nadpisujesz na miejsce tamtego.
qbba
hmm.. ale sam schema ideaowy mi nic nie daje. Chce wiedzic dokladniej jak to zrobic.
scanner
Ja stosuje coś takiego (nie jest to Smarty, ale na moje potrzeby wystarcza i zaw2sze moge własny kod zmodyfikowac łatwo):[php:1:c5d4413fd9]<?php
function __getTemplate($__file){
$__template = 'Error: Unable to open template file.';
if(file_exists($__file)){
$__template = file($__file);
$__template = implode('', $__template);
}
return $__template;
}
function __getTemplateBlock($__file, $__delimiter){
$__result = __getTemplate($__file);
$__noError = ereg($__delimiter, $__result, $__wynik);
if($__noError){
$__result = $__wynik[1]; // znaleziono - Zapisujemy klocek w tablicy
} else {
$__result = 'Error: Unable to get template content.';
}

return $__result;
}
?>[/php:1:c5d4413fd9]

__getTemplate() pobiera do pamięci plik z szablonem, i scala go w string (file() ładuje linijka do linijki do tablicy, dlatego implode);

__getTemplateBlock() z tego co wykona _getTemplate() wycina dany fragment, np. [php:1:c5d4413fd9]<?php $__delimiter = '<title>(.*)</title>'; ?>[/php:1:c5d4413fd9] pobierze tytuł strony - bez znaczników.
Cudi
Ja dziś potrzebowałem prościutkiej funkcji do parsowania, i wyszły dwie, krótka i dłuższa, zgadnijcie która szybsza :]

[php:1:e2179f13e7]<?php
function parse1($file, $blocks = array()){
if(file_exists($file)){
$f = fopen($file, 'r');
$unparsed = fread($f, filesize($file));
fclose($f);
}
else{
die('Plik "'.$file.'" nie istnieje!');
}

if(preg_match_all('#{(.+?)}#is', $unparsed, $found)){
$parsed = $unparsed;
foreach($found[1] as $block){
$parsed = str_replace('{'.$block.'}', $blocks[$block], $parsed);
}
}

return $parsed;
}
function parse2($file, $blocks = array()){
$unparsed = file_exists($file) ? implode('', file($file)) : die('Plik '.$file.' nieistnieje!');
return preg_replace('/{([^}]+)}/e', '$blocks["1"]', $unparsed);
}
?>[/php:1:e2179f13e7]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.