Кэеширование результата выполнение php скрипта

YS
На сайте с 17.06.2007
Offline
34
734

И так есть скрипт вида

show.php?id=XXX

Хотелось бы какое нибудь решение, для кэширвоания результатов - чтобы сделать минимальные изменения.

Т.е. вставить немного кода.

Плюс чтобы можно было явно указать когда сбросить кэш, когда нет.

Плюс чтобы онное решение еще бы имело статистику, настроки по обьему кэша и прочее.

Подскажите что смотреть, куда копать?

Shtogrin
На сайте с 02.11.2006
Offline
95
#1
www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
deepslam
На сайте с 09.05.2006
Offline
204
#2

Стукните в ICQ: 7668158 , есть готовое решение

Удаление вирусов на сайте (http://www.virusonsite.ru) | Scripto CMS - бесплатная система управления сайтом (http://www.scripto-cms.ru) |Профессиональный скрипт каталога ссылок , статей, фирм и объявлений! (http://www.scripto.ru) | Уникальный скрипт для публикации контента (http://publisher.scripto.ru)
J
На сайте с 15.10.2007
Offline
15
#3

Можно через output buffer.


function docache($filename)
{
$f = fopen($filename,"w");
fwrite($f,ob_get_contents());
fclose($f);
}

//в самом начале ставите проверку на существование кеша
$filename = (int)$_GET["id"];
if (file_exists($filename))
{
include "$filename.tmp";
}
else
{
ob_start() // начинаем кеширован выводимые данные

//ваш скрипт
// ....
//ваш скрипт

docache("$filename.tmp")
ob_end_flush();
}

В коде возможны баги и дырки, т.к. пишу по памяти :)

p.s. сейчас вот перечитал ваше сообщение, если нужна статистика управление кешем пожалуй лучше выбрать более основательные решения типа cache_lite из поста товарища Shtogrin

Дао уплывает вдаль и возвращается с утренним ветром
YS
На сайте с 17.06.2007
Offline
34
#4

Я пока сделал так

start_cache.php

<?php

// раздел настроек, которые вы можете менять
$settings_cachedir = '/home/zavalink/public_html/cache_files/';
$settings_cachetime = 10; //время жизни кэша

// код
$thispage = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$cachelink = $settings_cachedir.md5($thispage).".html";
if (file_exists($cachelink)) {
$cachelink_time = filemtime($cachelink);

if ((time() - $settings_cachetime) < $cachelink_time) {
readfile($cachelink);die();
}
}

ob_start();
?>

end_cache.php

<?php

$fp = fopen($cachelink, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();
?>

И в php.ini

auto_prepend_file = /home/zavalink/public_html/start_cache.php

auto_append_file = /home/zavalink/public_html/end_cache.php

Но увы. Первая загрузка страницы (порядка 200кб) порядка десяти секунд почему-то..:(

А так как мне кэш нужно для некоторых страниц секунд на 10-20 - получается не очень приемлемо. Хотя для других на ура работает.

Плюс нельзя сделать разные php.ini для разных поодоменов. Хотя можно проверить $_SERVER['HTTP_HOST'].

Более сложные решение поже проверю.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий