Помогни ни да направим Uroci.net по - богат! Добави урок

Кеширане с PEAR:Cache_lite

thelordofweb   трудност:    видян: 2811

Какво е PEAR и Cache_lite?

PEAR е база с разширения и приложения писани на php. Състои се от структурирани пакети код предоставени за безплатно ползване. Има изградена система за разпространение на код и поддръжка на пакети. Също така използва свой стандарт за писане на код.

Cache_lite е част от PEAR. Той е малка система за кеширане, оптимизиран за сайтове с голям трафик, бърз и безопасен.

Кеширането на информацията помага при наличието на голям брой потребители. Намалява запитванията към базата данни и предотвратява забавяне, което може да се получи при изчакването на базата да върне отговор при заявка. Това забавяне се получава, когато се премине броя на допустимите конекции към базата данни. Например, ако изведнъж получи 100 запитвания, а са разрешени само 30, тези 70 човека ще трябва да изчака на опашката, докато дойде техният ред. Ами ако се получат 1000+ запитвания наведнъж, колко време ще трябва да чака потребителят?

При кеширането ние изтегляме нужната ни информация само веднъж и я записваме на диска. След ново изпълнение на скрипта, ние ще проверим за кеширана информация и ако има такава ще я използваме. Не е нужно да правим повторно или десеторно запитване към базата данни.

Пример:

<?php

// Зареждаме Cache_lite

require_once('Cache/Lite.php');

// Задаваме уникален идентификационен код

$id = '123';

// Задаваме две опции.

// cacheDir - Директорията където ще пазим кеша

// lifetime - Времето за което е активен кеша в секунди

$options = array(

'cacheDir' => '/tmp/',

'lifeTime' => 3600

);

// Създаваме обект и му предоставяме опциите

$Cache_Lite = new Cache_Lite($options);

// Проверяваме за съществуващ идентификационен код.

// Ако е наличен кода ще използваме кеша към който сочи.

if ($data = $Cache_Lite->get($id)) {

// Извеждаме данните

echo $data;

echo “{Кеширан}”;

} else { // Нямаме кеш отговарящ на кода, така че ще създадем такъв

//Задаваме данните, които ще кешираме

$data = “Hello World”;

//Изпращаме ги към браузера

echo $data;

//Записваме данните в кеша

$Cache_Lite->save($data);

}

 
?>

 

Ако искате да кеширате само части от данните може да постъпите по този начин:

 

<?php

// Зареждаме Cache_lite

require_once('Cache/Lite.php');

// Задаваме две опции.

// cacheDir - Директорията където ще пазим кеша

// lifetime - Времето за което е активен кеша в секунди

$options = array(

'cacheDir' => '/tmp/',

'lifeTime' => 3600

);

// Създаваме обект и му предоставяме опциите

$Cache_Lite = new Cache_Lite($options);

//Обработваме блок 1

if ($data = $Cache_Lite->get(‘блок1’)) {

echo($data);

} else {

$data = ‘Данни от блок 1’;

$Cache_Lite->save($data);

}

echo('<br><br>Това не се кешира !<br><br>');

//Обработваме блок 2

if ($data = $Cache_Lite->get((‘блок2’)) {

echo($data);

} else {

$data = ‘Данни от блок 2’;

$Cache_Lite->save($data);

}

?>

 

Не винаги може да предоставим и поставим цялото съдържание на данните в една променлива. Но Cache_lite има решение на този проблем. Ще кешираме изхода.

Пример:

<?php

//Зареждаме разширението на Cache_lite

require_once('Cache/Lite/Output.php');

// Задаваме две опции.

// cacheDir - Директорията където ще пазим кеша

// lifetime - Времето за което е активен кеша в секунди

$options = array(

'cacheDir' => '/tmp/',

'lifeTime' => 10

);

// Създаваме обект и му предоставяме опциите

$cache = new Cache_Lite_Output($options);

//Стартираме буферирането на изхода

if (!($cache->start('123'))) {

// Ако кеша липсва изпълняваме кода

for($i=0;$i<1000;$i++) { // Изграждаме съдържанието

echo('0123456789');

}

//Приключваме с буферирането

$cache->end();

}

?>

 

Не е нужно да зареждаме всеки път външни файлове, ако данните ги имаме кеширани.

Трябва да заредим само тези, които са нужни на скрипта изцяло.

Пример:

 

<?php

//Зареждаме разширението на Cache_lite

require_once("Cache/Lite.php");

// Създаваме обект

$cache = new Cache_Lite();

//Ако имаме кеширани данни ги извеждаме.

if ($data = $Cache_Lite->get($id)) {

echo($data);

} else { // Ако нямаме, ги обработваме.

//Ето тук ще заредим това което ни трябва за обработката на данните

require_once("...")

require_once("...")

$Cache_Lite->save($data);

}

?>

Може да запазим в кеша и резултати от изпълнението на функции.

Пример:

<?php

//Зарежда разширението на Cache_lite

require_once('Cache/Lite/Function.php');

// Задаваме две опции.

// cacheDir - Директорията където ще пазим кеша

// lifetime - Времето за което е активен кеша в секунди

$options = array(

'cacheDir' => '/tmp/',

'lifeTime' => 3600

);


// Създаваме обект

$cache = new Cache_Lite_Function($options);

//Ако съществуват данни в кеша, ще бъдат прочетени от там.

//В противен случай ще се извика функиията i_need_your_time()

//и резултата от нея ще бъде запазен от Cache_lite

$mytime = $cache->call('i_need_your_time');

echo "Кеширано време $
mytime. Текущо време " . i_need_your_time();

<!--[endif]--&gt;

//Връща текущото време

function i_need_your_time() {
return date("H:i:s", mktime());
}

?>

Повече може да прочетете на този адрес -http://pear.php.net/manual/en/package.caching.cache-lite.php .

Автор:
Тодор Илиев



Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com