Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помощь в кеше
 
 автор: Ванек2010   (19.10.2010 в 10:29)   письмо автору
 
 

Я пока не совсем могу понять принцип его.
Вот у меня сейчас контент на странице построен таким образом.
Запрос к базе
Цикл {
Вывод контента
}

Запросов к базе очень много и страница грущиться долго, по mssql. Мне нужно чтобы конент был в папке cashe и обновлялся каждые 5 минут. Вот нашел скрипт но не пойму как с ним работать, что теперь делать с запросами на странице и как ф-ии вставлять и куда.
Вот скрипт
<?php
function WriteCache($content$filename) {
$fp fopen('Cache/'.$filename.'.html''w');
fwrite($fp$content);
fclose($fp);
}
function 
ReadCache($filename$expiry) {
if (
file_exists('Cache/'.$filename.'.html')) {
if ((
time() - $expiry) > filemtime('Cache/'.$filename.'.html')) {
return 
FALSE;
}
$cache file('Cache/'.$filename.'.html');
return 
implode(''$cache);
}
return 
FALSE;
}
ob_start();
if (!
$old_page_content ReadCache("Название_файла""Время_в_секундах")) {
// Контент ТОПа
$new_page_content ob_get_contents();
ob_clean();
WriteCache($new_page_content"Название_файла");
}
ob_end_clean();
echo 
$old_page_content.$new_page_content;
?>

  Ответить  
 
 автор: Лена   (19.10.2010 в 11:44)   письмо автору
 
   для: Ванек2010   (19.10.2010 в 10:29)
 

Функции оставляете как есть.
Смысл кеширования: проверяете, есть ли файл кеша, этот файл кеша вы должны как-то пометить, чтобы знать, что в нем хранятся те данные, которые вам нужны,
если есть файл кеша - читаем файл,
файла кеша нет - вытягиваем данные из базы и пишем вытянутую информацию в файл.

В вашем случае:


<?php
ob_start
();
//$old_page_content - читаете файл кеша, если он вообще есть и если время его создания не превышает установленного интервала 
if (!$old_page_content ReadCache("Название_файла""Время_в_секундах")) { 
// Контент ТОПа 
//$new_page_content - контент, что вы тянете из базы
//здесь и ваш запрос, и цикл, вытянули - записали в файл через WriteCache
$new_page_content ob_get_contents();
ob_clean(); 
WriteCache($new_page_content"Название_файла"); 

ob_end_clean(); 



Ваши 5 минут переведите в секунды и поставьте вторым аргументов функции ReadCache, насколько я поняла...
Не поняла, к чему здесь буферизацию делают.
И еще следует учитывать, что вам вообще нужно делать, и группировать запросы между собой.
Иногда файл кеша может быть результатом нескольких запросов к базе. Например, если вам нужно на странице создать несколько блоков с разным контентом и после страницу закешировать.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования