prune_super_cache() WPSCache 1.0
Хуков нет.
Возвращает
Null. Ничего.
Использование
prune_super_cache( $directory, $force, $rename );
Код prune_super_cache() prune super cache WPSCache 1.7.1
function prune_super_cache( $directory, $force = false, $rename = false ) {
// Don't prune a NULL/empty directory.
if ( null === $directory || '' === $directory ) {
wp_cache_debug( 'prune_super_cache: directory is blank' );
return false;
}
global $cache_max_time, $cache_path, $blog_cache_dir;
static $log = 0;
static $protected_directories = '';
$dir = $directory;
$directory = wpsc_get_realpath( $directory );
if ( $directory == '' ) {
wp_cache_debug( "prune_super_cache: exiting as file/directory does not exist : $dir" );
return false;
}
if ( ! wpsc_is_in_cache_directory( $directory ) ) {
wp_cache_debug( "prune_super_cache: exiting as directory is not in cache path: *$directory* (was $dir before realpath)" );
return false;
}
if ( false == @file_exists( $directory ) ) {
wp_cache_debug( "prune_super_cache: exiting as file/dir does not exist: $directory" );
return $log;
}
if( !isset( $cache_max_time ) )
$cache_max_time = 3600;
$now = time();
if ( $protected_directories == '' ) {
$protected_directories = wpsc_get_protected_directories();
}
if (is_dir($directory)) {
if( $dh = @opendir( $directory ) ) {
$directory = trailingslashit( $directory );
while( ( $entry = @readdir( $dh ) ) !== false ) {
if ($entry == '.' || $entry == '..')
continue;
$entry = $directory . $entry;
prune_super_cache( $entry, $force, $rename );
// If entry is a directory, AND it's not a protected one, AND we're either forcing the delete, OR the file is out of date,
if( is_dir( $entry ) && !in_array( $entry, $protected_directories ) && ( $force || @filemtime( $entry ) + $cache_max_time <= $now ) ) {
// if the directory isn't empty can't delete it
if( $handle = @opendir( $entry ) ) {
$donotdelete = false;
while( !$donotdelete && ( $file = @readdir( $handle ) ) !== false ) {
if ($file == '.' || $file == '..')
continue;
$donotdelete = true;
wp_cache_debug( "gc: could not delete $entry as it's not empty: $file", 2 );
}
closedir($handle);
}
if( $donotdelete )
continue;
if( !$rename ) {
@rmdir( $entry );
$log++;
if ( $force ) {
wp_cache_debug( "gc: deleted $entry, forced delete", 2 );
} else {
wp_cache_debug( "gc: deleted $entry, older than $cache_max_time seconds", 2 );
}
}
} elseif ( in_array( $entry, $protected_directories ) ) {
wp_cache_debug( "gc: could not delete $entry as it's protected.", 2 );
}
}
closedir($dh);
}
} elseif( is_file($directory) && ($force || @filemtime( $directory ) + $cache_max_time <= $now ) ) {
$oktodelete = true;
if ( in_array( $directory, $protected_directories ) ) {
wp_cache_debug( "gc: could not delete $directory as it's protected.", 2 );
$oktodelete = false;
}
if( $oktodelete && !$rename ) {
wp_cache_debug( "prune_super_cache: deleted $directory", 5 );
@unlink( $directory );
$log++;
} elseif( $oktodelete && $rename ) {
wp_cache_debug( "prune_super_cache: wp_cache_rebuild_or_delete( $directory )", 5 );
wp_cache_rebuild_or_delete( $directory );
$log++;
} else {
wp_cache_debug( "prune_super_cache: did not delete file: $directory" );
}
} else {
wp_cache_debug( "prune_super_cache: did not delete file as it wasn't a directory or file and not forced to delete new file: $directory" );
}
return $log;
}