Get Smarty


Donate Bitcoin Bitcoin

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Largest classified with thousands of ads at Shoppok

Buy cheap eyeglasses from and save up to 80%.

Buy prescription glasses from and save.

Cheap Glasses Now On Sale at Starts At $7.95.

Where to buy discount wedding dresses and cheap smart dresses free shipping -

Find Wedding Dresses Online at Canada from

Brautkleider auf

Find free files to download on

Looking For Affordable Wedding Dresses 2015 at Best Prices On

Shop high quality cheap prom dresses on

Buy New Arrival Cheap Prom Dresses 2015 at JDBRIDAL Prom Dress Store


Función manipuladora de cache

Como una alternativa al uso del mecanismo de caching por default basado en archivo, usted puede especificar una función habitual de manipulación de cache que será usada para leer, escribir y limpar archivos de cache.

Cree una función en su aplicación para que Smarty la use como un manipulador de cache. Defina el nombre de la variable de clase en el $cache_handler_func. El Smarty ahora usara esta para manipular datos en el cache. El primer parámetro es la acción, que puede ser uno de estos 'read', 'write' y 'clear'. El segundo parámetro es el objeto de Smarty. El tercer parámetro es el contenido que esta en el cache. Sobre 'write', el Smarty pasa el contenido en cache en estos parámetros. sobre 'read', el Smarty espera que su función acepte este parámetro por referencia y poblar estos con los datos en cache. Sobre 'clear', el Smarty pasa una variable en cero desde aquí que esta no es usada. El cuarto parámetro es el nombre del archivo de template(necesario para leer/escribir). El quinto parámetro es la cache_id (opcional). El sexto parámetro es la compile_id (opcional).

NOTA: El ultimo parámetro ($exp_time) fue adicionado en el Smarty-2.6.0.

Example 15.5.  ejemplo usando MySQL como una fuente de cache


ejemplo de uso:


$smarty = new Smarty;
$smarty->cache_handler_func = 'mysql_cache_handler';


mysql database is expected in this format:
create database SMARTY_CACHE;

create table CACHE_PAGES(
CacheID char(32) PRIMARY KEY,


function mysql_cache_handler($action, &$smarty_obj, &$cache_content, $tpl_file=null, $cache_id=null, $compile_id=null, $exp_time=null)
	// set db host, user and pass here
	$db_host = 'localhost';
	$db_user = 'myuser';
	$db_pass = 'mypass';
	$db_name = 'SMARTY_CACHE';
	$use_gzip = false;
	// create unique cache id
	$CacheID = md5($tpl_file.$cache_id.$compile_id);
	if(! $link = mysql_pconnect($db_host, $db_user, $db_pass)) {
		$smarty_obj->_trigger_error_msg("cache_handler: could not connect to database");
		return false;

	switch ($action) {
		case 'read':
			// read cache from database
			$results = mysql_query("select CacheContents from CACHE_PAGES where CacheID='$CacheID'");
			if(!$results) {
				$smarty_obj->_trigger_error_msg("cache_handler: query failed.");			
			$row = mysql_fetch_array($results,MYSQL_ASSOC);
			if($use_gzip && function_exists("gzuncompress")) {
				$cache_content = gzuncompress($row["CacheContents"]);
			} else {
				$cache_content = $row["CacheContents"];
			$return = $results;
		case 'write':
			// save cache to database
			if($use_gzip && function_exists("gzcompress")) {
				// compress the contents for storage efficiency
				$contents = gzcompress($cache_content);
			} else {
				$contents = $cache_content;
			$results = mysql_query("replace into CACHE_PAGES values(
			if(!$results) {
				$smarty_obj->_trigger_error_msg("cache_handler: query failed.");			
			$return = $results;
		case 'clear':
			// clear cache info
			if(empty($cache_id) && empty($compile_id) && empty($tpl_file)) {
				// clear them all
				$results = mysql_query("delete from CACHE_PAGES");			
			} else {
				$results = mysql_query("delete from CACHE_PAGES where CacheID='$CacheID'");			
			if(!$results) {
				$smarty_obj->_trigger_error_msg("cache_handler: query failed.");			
			$return = $results;
			// error, unknown action
			$smarty_obj->_trigger_error_msg("cache_handler: unknown action \"$action\"");
			$return = false;
	return $return;


No comments for this page.
Post a Comment
All comments are moderated. Support questions are ignored, use the forums instead.
Email: (not shown)
What is 15 plus 16? (Are you human?)


Sponsors [info]