prune_super_cache()
No Hooks.
Returns
null. Nothing (null).
Usage
prune_super_cache( $directory, $force, $rename );
- $directory(required)
- .
- $force
- .
Default:false - $rename
- .
Default:false
prune_super_cache() prune super cache code WPSCache 3.1.0
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 ) ) {
$donotdelete = false;
// if the directory isn't empty can't delete it
if ( $handle = @opendir( $entry ) ) {
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;
}