- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/cache_files.php
- Класс: CPHPCacheFiles
- Вызов: CPHPCacheFiles::clean
function clean($basedir, $initdir = false, $filename = false)
{
$DOCUMENT_ROOT = rtrim($_SERVER["DOCUMENT_ROOT"], "/");
if($filename <> '')
{
$res = CPHPCacheFiles::_unlink($DOCUMENT_ROOT.$basedir.$initdir.$filename);
bx_accelerator_reset();
return $res;
}
else
{
global $DB;
$initdir = trim($initdir, "/");
if($initdir == "")
{
$sourceDir = $DOCUMENT_ROOT."/".trim($basedir, "/");
if(file_exists($sourceDir) && is_dir($sourceDir))
{
$dh = opendir($sourceDir);
if(is_resource($dh))
{
while($entry = readdir($dh))
{
if(preg_match("/^(\.|\.\.|.*\.~\d+)$/", $entry))
{
continue;
}
if(is_dir($sourceDir."/".$entry))
{
CPHPCacheFiles::clean($basedir, $entry);
}
elseif(is_file($sourceDir."/".$entry))
{
CPHPCacheFiles::_unlink($sourceDir."/".$entry);
}
}
}
}
}
else
{
$source = "/".trim($basedir, "/")."/".$initdir;
$source = rtrim($source, "/");
$bDelayedDelete = false;
if(!preg_match("/^(\.|\.\.|.*\.~\d+)$/", $source) && file_exists($DOCUMENT_ROOT.$source))
{
$target = CPHPCacheFiles::_randomizeFile($source.".~");
if($target != '')
{
if(
$DB->Query("INSERT INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES ('*', '*', '".$DB->ForSQL($target)."', '*')")
)
{
if(@rename($DOCUMENT_ROOT.$source, $DOCUMENT_ROOT.$target))
{
$bDelayedDelete = true;
}
}
}
}
if($bDelayedDelete)
{
CPHPCacheFiles::_addAgent();
}
else
{
DeleteDirFilesEx($basedir.$initdir);
}
bx_accelerator_reset();
}
}
}