Кеширование Smarty

leosun

Новичок
Кеширование Smarty

Уважаемые программисты, подскажите пожалуйста, как в шаблонах Smarty задать не время через которое кеш утрачивает актуальность, а время в которое он утрачивает актуальность, мне нужно что бы шаблон каждый день после 5:30 утра утрачивал актуальность...
 

BRat

o_0
проверяй в скрипте, был ли кеш создан до 5.30, если был - вызывай clear_cache(), или clear_all_cache() (смотря что тебе нужно)
http://smarty.php.net/manual/en/search.php?direct=1&query=clear_cache
 

leosun

Новичок
Автор оригинала: BRat
проверяй в скрипте, был ли кеш создан до 5.30, если был - вызывай clear_cache(), или clear_all_cache() (смотря что тебе нужно)
http://smarty.php.net/manual/en/search.php?direct=1&query=clear_cache
Нет, не то, у меня очень ресурсоемкий скрипт а в 5:30 минимальная нагрузка на сервер, мне нужно сделать что бы скрипт был кеширован, допстим вошел посетитель в 6:00 утра запустил скрипт, он лег в кеш, но в следующий раз скрипт можно было перекешировать только на следующий день опять после 5:30 утра...
 

leosun

Новичок
Нет, шаблон маленький, но скрипт у меня очень ресурсоемкий, ну БД на 100.000 записей в скрипте 7 полных сканов БД, а запрос к БД лежит по is_caching поэтому если шаблон кеширован, запросов к БД нет, мне поэтому и нужно что б его кешировать можно было с утра, и если даже его запустят часов в 10:00 утра что б скрипт прокешировался, но потом следующее кеширование опять бы легло на 5:30 следующего утра!
 

BRat

o_0
если запросы лежат в is_caching, значит они используются в шаблоне, и это означает что ресурсоемкий именно он.
А теперь поясни что тебе мешает
проверяй в скрипте, был ли кеш создан до 5.30, если был - вызывай clear_cache(), или clear_all_cache() (смотря что тебе нужно)
 

Alexandre

PHPПенсионер
leosun решение завивит от задачи, а задачу знаешь только один ты (мы не телепаты).
Кешированеи в смарти подразумевает сохранение в файле кеша (директория задается в ини ) скомпилированный шаблон с уникальным иди.
есть несколько вариантов
- запускать чистку директории (части директорий ) кеша
- как уже упомянули, запускать clear_cache(), или clear_all_cache()
- просто почистить templates_c
- использовать механизм статической компиляции - без механизма смарти

Эффективность решения зависит от грамотно построенного алгоритма формирования идентификатора кеша.
 

Shicoo

Новичок
Re: Кеширование Smarty

... не время через которое кеш утрачивает актуальность, а время в которое он утрачивает актуальность, мне нужно что бы шаблон каждый день после 5:30 утра утрачивал актуальность...
В то время, когда генерируешь новый кеш, тебе надо высчитать сколько времени пройдет до 5:30 утра.

Механизм высчитывания довольно простой:

PHP:
$tm = mktime(05, 30, 00, $month, $day, $year)
где $month, $day, $year - дата следующего дня.

потом от $tm отнять текущее время (mktime(now())) и перевести результат в секунды.

Вот эти секунды и указать в качестве времени жизни кеша

По моему все так. Надо еще проверить работу скрипта, но идея я думаю понятна
 
Сверху