WordPress.org

Make WordPress Core

Ticket #8622: 8622.2.diff

File 8622.2.diff, 2.8 KB (added by Denis-de-Bernardy, 9 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 ) {