WordPress.org

Make WordPress Core

Ticket #8622: 8622.2.diff

File 8622.2.diff, 2.8 KB (added by Denis-de-Bernardy, 6 years ago)
  • wp-includes/http.php

     
    9595                static $working_transport, $blocking_transport, $nonblocking_transport; 
    9696 
    9797                if ( is_null($working_transport) ) { 
    98                         if ( true === WP_Http_ExtHttp::test($args) ) { 
    99                                 $working_transport['exthttp'] = new WP_Http_ExtHttp(); 
    100                                 $blocking_transport[] = &$working_transport['exthttp']; 
    101                         } else if ( true === WP_Http_Curl::test($args) ) { 
    102                                 $working_transport['curl'] = new WP_Http_Curl(); 
    103                                 $blocking_transport[] = &$working_transport['curl']; 
    104                         } else if ( true === WP_Http_Streams::test($args) ) { 
    105                                 $working_transport['streams'] = new WP_Http_Streams(); 
    106                                 $blocking_transport[] = &$working_transport['streams']; 
    107                         } else if ( true === WP_Http_Fopen::test($args) ) { 
    108                                 $working_transport['fopen'] = new WP_Http_Fopen(); 
    109                                 $blocking_transport[] = &$working_transport['fopen']; 
    110                         } else if ( true === WP_Http_Fsockopen::test($args) ) { 
    111                                 $working_transport['fsockopen'] = new WP_Http_Fsockopen(); 
    112                                 $blocking_transport[] = &$working_transport['fsockopen']; 
     98                        $transient = 'working_transports_' . md5(serialize($args)); 
     99                        $working_transports = get_transient($transient); 
     100                         
     101                        if ( is_array($working_transports) ) { 
     102                                foreach ( $working_transports as $key => $class ) { 
     103                                        $working_transport[$key] = new $class(); 
     104                                        $blocking_transport[] = &$working_transport[$key]; 
     105                                } 
     106                        } else { 
     107                                $working_transports = array(); 
     108                                if ( true === WP_Http_ExtHttp::test($args) ) { 
     109                                        $working_transports['exthttp'] = 'WP_Http_ExtHttp'; 
     110                                        $working_transport['exthttp'] = new WP_Http_ExtHttp(); 
     111                                        $blocking_transport[] = &$working_transport['exthttp']; 
     112                                } else if ( true === WP_Http_Curl::test($args) ) { 
     113                                        $working_transports['curl'] = 'WP_Http_Curl'; 
     114                                        $working_transport['curl'] = new WP_Http_Curl(); 
     115                                        $blocking_transport[] = &$working_transport['curl']; 
     116                                } else if ( true === WP_Http_Streams::test($args) ) { 
     117                                        $working_transports['streams'] = 'WP_Http_Streams'; 
     118                                        $working_transport['streams'] = new WP_Http_Streams(); 
     119                                        $blocking_transport[] = &$working_transport['streams']; 
     120                                } else if ( true === WP_Http_Fopen::test($args) ) { 
     121                                        $working_transports['fopen'] = 'WP_Http_Fopen'; 
     122                                        $working_transport['fopen'] = new WP_Http_Fopen(); 
     123                                        $blocking_transport[] = &$working_transport['fopen']; 
     124                                } else if ( true === WP_Http_Fsockopen::test($args) ) { 
     125                                        $working_transports['fsockopen'] = 'WP_Http_Fsockopen'; 
     126                                        $working_transport['fsockopen'] = new WP_Http_Fsockopen(); 
     127                                        $blocking_transport[] = &$working_transport['fsockopen']; 
     128                                } 
     129                                set_transient($transient, $working_transports, 86400); 
    113130                        } 
    114131 
    115132                        foreach ( array('curl', 'streams', 'fopen', 'fsockopen', 'exthttp') as $transport ) {