WordPress.org

WordPress MU

Changeset 2025


Ignore:
Timestamp:
12/11/09 14:31:13 (4 years ago)
Author:
donncha
Message:

Cache the dirsize for up to an hour or until a file is uploaded or deleted. See #1175

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/wpmu-functions.php

    r2022 r2025  
    16611661} 
    16621662 
    1663 function get_dirsize($directory) { 
     1663function get_dirsize( $directory ) { 
     1664    $dirsize = get_option( 'dirsize_cache' ); 
     1665    if ( is_array( $dirsize ) && isset( $dirsize[ $directory ][ 'size' ] ) && $dirsize[ $directory ][ 'age' ] > time() - 3600 ) { 
     1666        return $dirsize[ $directory ][ 'size' ]; 
     1667    } 
     1668    if ( false == is_array( $dirsize ) ) { 
     1669        $dirsize = array(); 
     1670    } 
     1671    $dirsize[ $directory ][ 'size' ] = recurse_dirsize( $directory ); 
     1672    $dirsize[ $directory ][ 'age' ] = time(); 
     1673 
     1674    update_option( 'dirsize_cache', $dirsize ); 
     1675    return $dirsize[ $directory ][ 'size' ]; 
     1676} 
     1677 
     1678function clear_dirsize_cache( $file = true ) { 
     1679    delete_option( 'dirsize_cache' ); 
     1680    return $file; 
     1681} 
     1682add_filter( 'wp_handle_upload', 'clear_dirsize_cache' ); 
     1683add_action( 'delete_attachment', 'clear_dirsize_cache' ); 
     1684 
     1685function recurse_dirsize( $directory ) { 
    16641686    $size = 0; 
    16651687    if(substr($directory,-1) == '/') $directory = substr($directory,0,-1); 
     
    16721694                    $size += filesize($path); 
    16731695                } elseif(is_dir($path)) { 
    1674                     $handlesize = get_dirsize($path); 
     1696                    $handlesize = recurse_dirsize($path); 
    16751697                    if($handlesize >= 0) { 
    16761698                        $size += $handlesize; 
Note: See TracChangeset for help on using the changeset viewer.