Bitrix Site Manager

CPHPCache::StartDataCache

bool
CPHPCache::StartDataCache(
 int cache_life_time = false,
 string cache_id = false,
 mixed init_dir = false,
 array vars = array()
)

The method StartDataCache starts the buffered HTML output, or emits the cache content if it is not expired yet. If the cache file is expired the function returns true, or false otherwise.

Parameters

ParameterDescription
cache_life_time Cache time to live, in seconds.
Optional. Cache lifetime specified in the InitCache function is used by default.
cache_id A unique cache ID. This ID must contain all the parameters which may affect the result of cached code execution.
Optional. The unique cache ID specified in the CPHPCache::InitCache function is used by default.
init_dir The name of directory for which the cache is valid. If "/", the cache is valid for all site directories.  
Optional. The name of directory specified in the CPHPCache::InitCache function is used by default. 
vars An array of variables which are to be cached. Array should be in the following format:
array(
 "VARIABLE NAME 1" => "VARIABLE VALUE 1", 
 "VARIABLE NAME 2" => "VARIABLE VALUE 2", 
 ...)
The variables to be written to the cache file are flushed to disc by the CPHPCache::EndDataCache function.
Optional. The default value is an empty array.

See Also

Example



<?
// create an object
$obCache = new CPHPCache; 

// caching time - 30 minutes
$life_time = 30*60; 

// form the cache ID according to all parameters 
// which may affect the resulting HTML
$cache_id = $ELEMENT_ID.$SECTION_ID.$USER->GetUserGroupString(); 

// if the cache exists and is not expired...
if($obCache->InitCache($life_time, $cache_id, "/") :
    // obtain cached variables
    $vars = $obCache->GetVars();
    $SECTION_TITLE = $vars["SECTION_TITLE"];
else :
    // otherwise call the database
    $arSection = GetIBlockSection($SECTION_ID);
    $SECTION_TITLE = $arSection["NAME"];
endif;

// add a menu item to the navigation chain
$APPLICATION->AddChainItem($SECTION_TITLE, $SECTION_URL."SECTION_ID=".$SECTION_ID);

// start buffered output
if($obCache->StartDataCache()):

    // obtain the information block element parameters from the database
    if($arIBlockElement = GetIBlockElement($ELEMENT_ID, $IBLOCK_TYPE)):
        echo "<pre>"; print_r($arIBlockElement); echo "</pre>";
    endif;

    // write the preliminary buffered output to the cache file
    // together with an additional variable
    $obCache->EndDataCache(array(
        "SECTION_TITLE"    => $SECTION_TITLE
        )); 
endif;
?>