- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/data/cacheenginefiles.php
- Класс: BitrixMainDataCacheEngineFiles
- Вызов: CacheEngineFiles::write
public function write($vars, $baseDir, $initDir, $filename, $ttl)
{
static $search = array("\", "'", " ");
static $replace = array("\\", "\'", "'.chr(0).'");
$documentRoot = MainLoader::getDocumentRoot();
$folder = $documentRoot."/".ltrim($baseDir.$initDir, "/");
$fn = $folder.$filename;
$fnTmp = $folder.md5(mt_rand()).".tmp";
if (!CheckDirPath($fn))
return;
if ($handle = fopen($fnTmp, "wb+"))
{
if (is_array($vars))
{
$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($search, $replace, serialize($vars))."';";
$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 .= $vars;
}
$this->written = fwrite($handle, $contents);
$this->path = $fn;
$len = strlen($contents);
fclose($handle);
static::unlink($fn);
if ($this->written === $len)
rename($fnTmp, $fn);
static::unlink($fnTmp);
if ($this->useLock)
{
$this->unlock($fn);
}
}
}