WordPress.org

Make WordPress Core

Ticket #1103: crude_rss_cache_fix.patch

File crude_rss_cache_fix.patch, 3.8 KB (added by anonymousbugger, 10 years ago)
  • wp-includes/rss-functions.php

    ==== Patch <crude_rss_cache_fix> level 1
    Source: 81e510b7-0ff2-0310-ae0c-f70243c84fd4:/wordpress-branches/rss_cache:2470 [local]
    Target: 1a063a9b-81f0-0310-95a4-ce76da25c4cd:/trunk:2444 [mirrored]
            (http://svn.automattic.com/wordpress/trunk)
    Log:
    Merge rss_fix
    === wp-includes/rss-functions.php
    ==================================================================
     
    1010define('RSS', 'RSS'); 
    1111define('ATOM', 'Atom'); 
    1212define('MAGPIE_USER_AGENT', 'WordPress/' . $wp_version); 
     13define('MAGPIE_CACHE_ON',true); 
     14define('MAGPIE_CACHE_DIR',ABSPATH . "wp-content/cache"); 
     15define('MAGPIE_CACHE_AGE',86400); 
    1316 
    1417class MagpieRSS {  
    1518        var $parser; 
     
    664667                 
    665668                update_option($cache_option, $rss); 
    666669                update_option($cache_timestamp, time() ); 
    667                  
    668                 return $cache_option; 
     670                $cache_file = $this->file_name( $url ); 
     671                $fp = @fopen( $cache_file, 'w' ); 
     672                if ( ! $fp ) { 
     673                        $this->error("Cache unable to open file for writing: $cache_file"); 
     674                        return 0; 
     675                } 
     676                $data = $this->serialize( $rss );                                                                       
     677                fwrite( $fp, $data );                                                                                   
     678                fclose( $fp );                                                                                               
     679                return $cache_file; 
    669680        } 
    670681         
    671682/*=======================================================================*\ 
     
    676687\*=======================================================================*/      
    677688        function get ($url) { 
    678689                $this->ERROR = ""; 
    679                 $cache_option = 'rss_' . $this->file_name( $url ); 
    680                  
    681                 if ( ! get_option( $cache_option ) ) { 
    682                         $this->debug(  
    683                                 "Cache doesn't contain: $url (cache option: $cache_option)" 
    684                         ); 
    685                         return 0; 
     690                $cache_file = $this->file_name( $url ); 
     691             
     692                if ( ! file_exists( $cache_file ) ) { 
     693                    $this->debug("Cache doesn't contain: $url (cache file: $cache_file)"); 
     694                    return 0; 
    686695                } 
    687                  
    688                 $rss = get_option( $cache_option ); 
    689                  
     696             
     697                $fp = @fopen($cache_file, 'r'); 
     698                if ( ! $fp ) { 
     699                    $this->error("Failed to open cache file for reading: $cache_file"); 
     700                    return 0; 
     701                } 
     702 
     703                $data = fread( $fp, filesize($cache_file) ); 
     704                $rss = $this->unserialize( $data ); 
     705         
    690706                return $rss; 
    691707        } 
    692708 
     
    701717                $this->ERROR = ""; 
    702718                $cache_option = $this->file_name( $url ); 
    703719                $cache_timestamp = 'rss_' . $this->file_name( $url ) . '_ts'; 
     720                $filename = $this->file_name( $url ); 
    704721 
    705                 if ( $mtime = get_option($cache_timestamp) ) { 
    706                         // find how long ago the file was added to the cache 
    707                         // and whether that is longer then MAX_AGE 
    708                         $age = time() - $mtime; 
    709                         if ( $this->MAX_AGE > $age ) { 
    710                                 // object exists and is current 
    711                                 return 'HIT'; 
    712                         } 
    713                         else { 
    714                                 // object exists but is old 
    715                                 return 'STALE'; 
    716                         } 
     722                if ( file_exists( $filename ) ) { 
     723                    // find how long ago the file was added to the cache 
     724                    // and whether that is longer then MAX_AGE 
     725                    $mtime = filemtime( $filename ); 
     726                    $age = time() - $mtime; 
     727                    if ( $this->MAX_AGE > $age ) { 
     728                        // object exists and is current 
     729                        return 'HIT'; 
     730                    } 
     731                    else { 
     732                        // object exists but is old 
     733                        return 'STALE'; 
     734                    } 
    717735                } 
    718736                else { 
    719                         // object does not exist 
    720                         return 'MISS'; 
     737                    // object does not exist 
     738                    return 'MISS'; 
    721739                } 
    722740        } 
    723741 
     
    742760        Output:         a file name 
    743761\*=======================================================================*/              
    744762        function file_name ($url) { 
    745                 return md5( $url ); 
     763                $filename = md5( $url ); 
     764                return join( DIRECTORY_SEPARATOR, array( $this->BASE_CACHE, $filename ) ); 
    746765        } 
    747766         
    748767/*=======================================================================*\ 
     
    847866                return false; 
    848867        } 
    849868} 
    850 ?> 
    851  No newline at end of file 
     869?>