- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/cache_files.php
- Класс: CPHPCacheFiles
- Вызов: CPHPCacheFiles::write
function write($arAllVars, $basedir, $initdir, $filename, $TTL)
{
$folder = rtrim($_SERVER["DOCUMENT_ROOT"], "/")."/".ltrim($basedir.$initdir, "/");
$fn = $folder.$filename;
$tmp_fn = $folder.md5(mt_rand()).".tmp";
if(!CheckDirPath($fn))
return;
if($handle = fopen($tmp_fn, "wb+"))
{
if(is_array($arAllVars))
{
$contents = "";
$contents .= "nif($INCLUDE_FROM_CACHE!='Y')return false;";
$contents .= "n$datecreate = '".str_pad(time(), 12, "0", STR_PAD_LEFT)."';";
$contents .= "n$dateexpire = '".str_pad(time() + intval($TTL), 12, "0", STR_PAD_LEFT)."';";
$contents .= "n$ser_content = '".str_replace("'", "'", str_replace("\", "\\", serialize($arAllVars)))."';";
$contents .= "nreturn true;";
$contents .= "n?>";
}
else
{
$contents = "BX".str_pad(time(), 12, "0", STR_PAD_LEFT).str_pad(time() + intval($this->TTL), 12, "0", STR_PAD_LEFT);
$contents .= $arAllVars;
}
$this->written = fwrite($handle, $contents);
$this->path = $fn;
$len = function_exists('mb_strlen')? mb_strlen($contents, 'latin1') : mb_strlen($contents);
fclose($handle);
$this->_unlink($fn);
if($this->written === $len)
rename($tmp_fn, $fn);
$this->_unlink($tmp_fn);
}
}