Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re[2]: кеширование
- To: nginx-ru@xxxxxxxxx
- Subject: Re: Re[2]: кеширование
- From: AlexeyK <itsmegawtf@xxxxxxxxx>
- Date: Thu, 21 Jun 2007 15:40:33 +0300
- Dkim-signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=HxgUrN/fYoNvY7eYVirvEkvYTJvOOe1KE95X9hBGUKje7pkX4uMXlP7/8G1IcYZ6NRJLzGFDuC+ZEAb2+m4OpTqu/64G0YZcYxIHcAvUWDxB72mFu0TSZfYcX+gZzcnkVj3+AKScwAKI+55FqRfNRrXSZ6GjtL45A+scB6OWiVI=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=e0bedvOi25Posd3u5qVacEOSwn0SmQtxy0K0abNa3GnS5Bd9hQYQqPbO++GMms+Y2KMwWUl49bg4O6VkDwoXOIfxP57B7wfOnLiNZLuT1mAnNuVfB0hMxkPQXwVCWcZxHPATpUlayYf1COgT0ko+DhB7JYseXRTEyIZFGrLczes=
- In-reply-to: <20070621134836.3585.MAIL@xxxxxxxxx>
- References: <467A3454.7090306@xxxxxxxxxxxxxxxxx> <467A43F5.6020506@xxxxxxxxxxxxx> <20070621134836.3585.MAIL@xxxxxxxxx>
2007/6/21, AleXXX V. NovikoFF <mail@xxxxxxxxx>:
У меня вот так сделано:
<?
$fp=fopen("portal.log", "r"); // открыли время последнего изменения
$r=trim(fgets($fp, 11));
fclose($fp);
if(time()-$r<60){ // 1 минута
echo implode("", file("portal.txt")); // выдали кеш юзеру
echo "\n\n<!-- FROM CACHE -->";
}else{
set_time_limit(60);
ignore_user_abort(true); // чтобы кеш не сломался
ob_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
тра-ля-ля что-то тут генерится и т.д.
....
</HTML>
<?
$out=ob_get_contents();
ob_end_clean();
// сохранили кеш
$fp=fopen("portal.txt", "w");
fputs($fp, $out);
fclose($fp);
// записали время сохранения
$fp=fopen("portal.log", "w");
$r=fputs($fp, time());
fclose($fp);
};
?>
Собственно решение "в лоб" - но снизило нагрузку раз в 10, страница
посещаемая...
On Thu, 21 Jun 2007 12:25:09 +0300
Sergey Smitienko <hunter@xxxxxxxxxxxxx> wrote:
SS> Вам поможет ob_start() & Co. По 5-6 строчек на каждый php файл.
SS> > Да-да, кто бы еще популярно показал, как это делается без переделки уже
SS> > имеющегося php кода...
SS> >
SS> --
SS> Sergey Smitienko
SS>
SS>
--
AleXXX V. NovikoFF <mail@xxxxxxxxx>
А не проще ли временную метку брать каким-то stat(), а не
записью/чтением из/в файл ? :)
+ если php > 4, то разумнее file_get_contents()/file_put_contents();
да и кажется мне на первый взгляд, что нгинксом подобное сделать тоже
можно, что-то вроде проверки таймстампа и в зависимости от него
редирект куда надо, либо тот же крон использовать для записи/очистки
кеша.
Чем меньше в данной ситуации будет абстракций вокруг функционала
системы/вебсервера, тем быстрее будет работать подобный псевдо-кеш :)
|