wp_cache_get_ob() │ WPSCache 1.0
Возвращает
null
. Ничего (null).
Использование
wp_cache_get_ob( $buffer );
- $buffer (обязательный) (передается по ссылке — &)
- -
Код wp_cache_get_ob() wp cache get ob WPSCache 1.12.4
<?php function wp_cache_get_ob( &$buffer ) { global $cache_enabled, $cache_path, $cache_filename, $wp_start_time, $supercachedir; global $new_cache, $wp_cache_meta, $cache_compression, $wp_super_cache_query; global $wp_cache_gzip_encoding, $super_cache_enabled; global $gzsize, $supercacheonly; global $blog_cache_dir, $wp_supercache_cache_list; global $wp_cache_not_logged_in, $cache_max_time; global $wp_cache_is_home, $wp_cache_front_page_checks, $wp_cache_mfunc_enabled; if ( isset( $wp_cache_mfunc_enabled ) == false ) { $wp_cache_mfunc_enabled = 0; } $new_cache = true; $wp_cache_meta = array(); /* * Mode paranoic, check for closing tags * we avoid caching incomplete files */ if ( $buffer == '' ) { $new_cache = false; if ( isset( $GLOBALS['wp_super_cache_debug'] ) && $GLOBALS['wp_super_cache_debug'] ) { wp_cache_debug( "Buffer is blank. Output buffer may have been corrupted by another plugin or this is a redirected URL. Look for text 'ob_start' in the files of your plugins directory.", 2 ); wp_cache_add_to_buffer( $buffer, 'Page not cached by WP Super Cache. Blank Page. Check output buffer usage by plugins.' ); } } if ( isset( $wp_super_cache_query['is_404'] ) && false == apply_filters( 'wpsupercache_404', false ) ) { $new_cache = false; if ( isset( $GLOBALS['wp_super_cache_debug'] ) && $GLOBALS['wp_super_cache_debug'] ) { wp_cache_debug( '404 file not found not cached', 2 ); wp_cache_add_to_buffer( $buffer, 'Page not cached by WP Super Cache. 404.' ); } } if ( ! preg_match( apply_filters( 'wp_cache_eof_tags', '/(<\/html>|<\/rss>|<\/feed>|<\/urlset|<\?xml)/i' ), $buffer ) ) { $new_cache = false; if ( isset( $GLOBALS['wp_super_cache_debug'] ) && $GLOBALS['wp_super_cache_debug'] ) { wp_cache_debug( 'No closing html tag. Not caching.', 2 ); wp_cache_add_to_buffer( $buffer, 'Page not cached by WP Super Cache. No closing HTML tag. Check your theme.' ); } } if ( ! $new_cache ) { return wp_cache_maybe_dynamic( $buffer ); } $duration = wp_cache_microtime_diff( $wp_start_time, microtime() ); $duration = sprintf( '%0.3f', $duration ); wp_cache_add_to_buffer( $buffer, "Dynamic page generated in $duration seconds." ); if ( ! wp_cache_writers_entry() ) { wp_cache_add_to_buffer( $buffer, 'Page not cached by WP Super Cache. Could not get mutex lock.' ); wp_cache_debug( 'Could not get mutex lock. Not caching.', 1 ); return wp_cache_maybe_dynamic( $buffer ); } if ( $wp_cache_not_logged_in && isset( $wp_super_cache_query['is_feed'] ) ) { wp_cache_debug( 'Feed detected. Writing wpcache cache files.', 5 ); $wp_cache_not_logged_in = false; } $home_url = parse_url( trailingslashit( get_bloginfo( 'url' ) ) ); $dir = get_current_url_supercache_dir(); $supercachedir = $cache_path . 'supercache/' . preg_replace( '/:.*$/', '', $home_url['host'] ); if ( wpsc_is_get_query() || isset( $wp_super_cache_query['is_feed'] ) || ( $super_cache_enabled == true && is_dir( substr( $supercachedir, 0, -1 ) . '.disabled' ) ) ) { wp_cache_debug( 'Supercache disabled: GET or feed detected or disabled by config.', 2 ); $super_cache_enabled = false; } $tmp_wpcache_filename = $cache_path . uniqid( mt_rand(), true ) . '.tmp'; if ( defined( 'WPSC_SUPERCACHE_ONLY' ) ) { $supercacheonly = true; wp_cache_debug( 'wp_cache_get_ob: WPSC_SUPERCACHE_ONLY defined. Only creating supercache files.' ); } else { $supercacheonly = false; } if ( $super_cache_enabled ) { if ( wp_cache_get_cookies_values() == '' && ! wpsc_is_get_query() ) { wp_cache_debug( 'Anonymous user detected. Only creating Supercache file.', 3 ); $supercacheonly = true; } } $cache_error = ''; if ( wpsc_is_caching_user_disabled() ) { $super_cache_enabled = false; $cache_enabled = false; $cache_error = 'Not caching requests by known users. (See Advanced Settings page)'; wp_cache_debug( 'Not caching for known user.', 5 ); } if ( ! $cache_enabled ) { wp_cache_debug( 'Cache is not enabled. Sending buffer to browser.', 5 ); wp_cache_writers_exit(); wp_cache_add_to_buffer( $buffer, "Page not cached by WP Super Cache. Check your settings page. $cache_error" ); if ( $wp_cache_mfunc_enabled == 1 ) { global $wp_super_cache_late_init; if ( false == isset( $wp_super_cache_late_init ) || ( isset( $wp_super_cache_late_init ) && $wp_super_cache_late_init == 0 ) ) { wp_cache_add_to_buffer( $buffer, 'Super Cache dynamic page detected but $wp_super_cache_late_init not set. See the readme.txt for further details.' ); } } return wp_cache_maybe_dynamic( $buffer ); } if ( @is_dir( $dir ) == false ) { @wp_mkdir_p( $dir ); } $dir = wpsc_get_realpath( $dir ); if ( ! $dir ) { wp_cache_debug( 'wp_cache_get_ob: not caching as directory does not exist.' ); return $buffer; } $dir = trailingslashit( $dir ); if ( ! wpsc_is_in_cache_directory( $dir ) ) { wp_cache_debug( "wp_cache_get_ob: not caching as directory is not in cache_path: $dir" ); return $buffer; } $fr = $fr2 = $gz = false; // Open wp-cache cache file if ( ! $supercacheonly ) { $fr = @fopen( $tmp_wpcache_filename, 'w' ); if ( ! $fr ) { wp_cache_debug( 'Error. Supercache could not write to ' . str_replace( ABSPATH, '', $cache_path ) . $cache_filename, 1 ); wp_cache_add_to_buffer( $buffer, "File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $cache_path ) . $cache_filename ); wp_cache_writers_exit(); return wp_cache_maybe_dynamic( $buffer ); } } else { $user_info = wp_cache_get_cookies_values(); $do_cache = apply_filters( 'do_createsupercache', $user_info ); if ( $super_cache_enabled && ( $user_info == '' || $do_cache === true ) ) { $cache_fname = $dir . supercache_filename(); $tmp_cache_filename = $dir . uniqid( mt_rand(), true ) . '.tmp'; $fr2 = @fopen( $tmp_cache_filename, 'w' ); if ( ! $fr2 ) { wp_cache_debug( 'Error. Supercache could not write to ' . str_replace( ABSPATH, '', $tmp_cache_filename ), 1 ); wp_cache_add_to_buffer( $buffer, "File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $tmp_cache_filename ) ); @fclose( $fr ); @unlink( $tmp_wpcache_filename ); wp_cache_writers_exit(); return wp_cache_maybe_dynamic( $buffer ); } elseif ( $cache_compression && ( ! isset( $wp_cache_mfunc_enabled ) || $wp_cache_mfunc_enabled == 0 ) ) { // don't want to store compressed files if using dynamic content $gz = @fopen( $tmp_cache_filename . '.gz', 'w' ); if ( ! $gz ) { wp_cache_debug( 'Error. Supercache could not write to ' . str_replace( ABSPATH, '', $tmp_cache_filename ) . '.gz', 1 ); wp_cache_add_to_buffer( $buffer, "File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $tmp_cache_filename ) . '.gz' ); @fclose( $fr ); @unlink( $tmp_wpcache_filename ); @fclose( $fr2 ); @unlink( $tmp_cache_filename ); wp_cache_writers_exit(); return wp_cache_maybe_dynamic( $buffer ); } } } } $added_cache = 0; $buffer = apply_filters( 'wpsupercache_buffer', $buffer ); wp_cache_append_tag( $buffer ); /* * Dynamic content enabled: write the buffer to a file and then process any templates found using * the wpsc_cachedata filter. Buffer is then returned to the visitor. */ if ( $wp_cache_mfunc_enabled == 1 ) { if ( preg_match( '/<!--mclude|<!--mfunc|<!--dynamic-cached-content-->/', $buffer ) ) { // Dynamic content wp_cache_debug( 'mfunc/mclude/dynamic-cached-content tags have been retired. Please update your theme. See docs for updates.' ); wp_cache_add_to_buffer( $buffer, 'Warning! Obsolete mfunc/mclude/dynamic-cached-content tags found. Please update your theme. See http://ocaoimh.ie/y/5b for more information.' ); } global $wp_super_cache_late_init; if ( false == isset( $wp_super_cache_late_init ) || ( isset( $wp_super_cache_late_init ) && $wp_super_cache_late_init == 0 ) ) { wp_cache_add_to_buffer( $buffer, 'Super Cache dynamic page detected but late init not set. See the readme.txt for further details.' ); } if ( $fr ) { // wpcache caching wp_cache_debug( 'Writing dynamic buffer to wpcache file.' ); wp_cache_add_to_buffer( $buffer, 'Dynamic WPCache Super Cache' ); fwrite( $fr, '<?php die(); ?>' . $buffer ); } elseif ( isset( $fr2 ) ) { // supercache active wp_cache_debug( 'Writing dynamic buffer to supercache file.' ); wp_cache_add_to_buffer( $buffer, 'Dynamic Super Cache' ); fwrite( $fr2, $buffer ); } $wp_cache_meta['dynamic'] = true; if ( $wp_cache_mfunc_enabled == 1 && do_cacheaction( 'wpsc_cachedata_safety', 0 ) === 1 ) { $buffer = do_cacheaction( 'wpsc_cachedata', $buffer ); // dynamic content for display } if ( $cache_compression && $wp_cache_gzip_encoding ) { wp_cache_debug( 'Gzipping dynamic buffer for display.', 5 ); wp_cache_add_to_buffer( $buffer, 'Compression = gzip' ); $gzdata = gzencode( $buffer, 6, FORCE_GZIP ); $gzsize = ( function_exists( 'mb_strlen' ) && function_exists( 'is_utf8_charset' ) ) ? mb_strlen( $gzdata, '8bit' ) : strlen( $gzdata ); } } else { if ( defined( 'WPSC_VARY_HEADER' ) ) { if ( WPSC_VARY_HEADER != '' ) { $vary_header = WPSC_VARY_HEADER; } else { $vary_header = ''; } } else { $vary_header = 'Accept-Encoding, Cookie'; } if ( $vary_header ) { $wp_cache_meta['headers']['Vary'] = 'Vary: ' . $vary_header; } if ( $gz || $wp_cache_gzip_encoding ) { wp_cache_debug( 'Gzipping buffer.', 5 ); wp_cache_add_to_buffer( $buffer, 'Compression = gzip' ); $gzdata = gzencode( $buffer, 6, FORCE_GZIP ); $gzsize = ( function_exists( 'mb_strlen' ) && function_exists( 'is_utf8_charset' ) ) ? mb_strlen( $gzdata, '8bit' ) : strlen( $gzdata ); $wp_cache_meta['headers']['Content-Encoding'] = 'Content-Encoding: ' . $wp_cache_gzip_encoding; // Return uncompressed data & store compressed for later use if ( $fr ) { wp_cache_debug( 'Writing gzipped buffer to wp-cache cache file.', 5 ); fwrite( $fr, '<?php die(); ?>' . $gzdata ); } } elseif ( $fr ) { // no compression wp_cache_debug( 'Writing non-gzipped buffer to wp-cache cache file.' ); fwrite( $fr, '<?php die(); ?>' . $buffer ); } if ( $fr2 ) { wp_cache_debug( 'Writing non-gzipped buffer to supercache file.' ); wp_cache_add_to_buffer( $buffer, 'super cache' ); fwrite( $fr2, $buffer ); } if ( isset( $gzdata ) && $gz ) { wp_cache_debug( 'Writing gzipped buffer to supercache file.' ); fwrite( $gz, $gzdata ); } } $new_cache = true; if ( $fr ) { $supercacheonly = false; fclose( $fr ); if ( filesize( $tmp_wpcache_filename ) == 0 ) { wp_cache_debug( "Warning! The file $tmp_wpcache_filename was empty. Did not rename to {$dir}{$cache_filename}", 5 ); @unlink( $tmp_wpcache_filename ); } else { if ( ! @rename( $tmp_wpcache_filename, $dir . $cache_filename ) ) { if ( false == is_dir( $dir ) ) { @wp_mkdir_p( $dir ); } @unlink( $dir . $cache_filename ); @rename( $tmp_wpcache_filename, $dir . $cache_filename ); } if ( file_exists( $dir . $cache_filename ) ) { wp_cache_debug( "Renamed temp wp-cache file to {$dir}{$cache_filename}", 5 ); } else { wp_cache_debug( "FAILED to rename temp wp-cache file to {$dir}{$cache_filename}", 5 ); } $added_cache = 1; } } if ( $fr2 ) { fclose( $fr2 ); if ( $wp_cache_front_page_checks && $cache_fname == $supercachedir . $home_url['path'] . supercache_filename() && ! ( $wp_cache_is_home ) ) { wp_cache_writers_exit(); wp_cache_debug( 'Warning! Not writing another page to front page cache.', 1 ); return $buffer; } elseif ( @filesize( $tmp_cache_filename ) == 0 ) { wp_cache_debug( "Warning! The file $tmp_cache_filename was empty. Did not rename to {$cache_fname}", 5 ); @unlink( $tmp_cache_filename ); } else { if ( ! @rename( $tmp_cache_filename, $cache_fname ) ) { @unlink( $cache_fname ); @rename( $tmp_cache_filename, $cache_fname ); } wp_cache_debug( "Renamed temp supercache file to $cache_fname", 5 ); $added_cache = 1; } } if ( $gz ) { fclose( $gz ); if ( @filesize( $tmp_cache_filename . '.gz' ) == 0 ) { wp_cache_debug( "Warning! The file {$tmp_cache_filename}.gz was empty. Did not rename to {$cache_fname}.gz", 5 ); @unlink( $tmp_cache_filename . '.gz' ); } else { if ( ! @rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' ) ) { @unlink( $cache_fname . '.gz' ); @rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' ); } wp_cache_debug( "Renamed temp supercache gz file to {$cache_fname}.gz", 5 ); $added_cache = 1; } } if ( $added_cache && isset( $wp_supercache_cache_list ) && $wp_supercache_cache_list ) { update_option( 'wpsupercache_count', (int) get_option( 'wpsupercache_count' ) + 1 ); $last_urls = (array) get_option( 'supercache_last_cached' ); if ( count( $last_urls ) >= 10 ) { $last_urls = array_slice( $last_urls, 1, 9 ); } $last_urls[] = array( 'url' => preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', $_SERVER['REQUEST_URI'] ), 'date' => date( 'Y-m-d H:i:s' ), ); update_option( 'supercache_last_cached', $last_urls ); } wp_cache_writers_exit(); if ( ! headers_sent() && $wp_cache_gzip_encoding && $gzdata ) { wp_cache_debug( 'Writing gzip content headers. Sending buffer to browser', 5 ); header( 'Content-Encoding: ' . $wp_cache_gzip_encoding ); if ( defined( 'WPSC_VARY_HEADER' ) ) { if ( WPSC_VARY_HEADER != '' ) { $vary_header = WPSC_VARY_HEADER; } else { $vary_header = ''; } } else { $vary_header = 'Accept-Encoding, Cookie'; } if ( $vary_header ) { header( 'Vary: ' . $vary_header ); } header( 'Content-Length: ' . $gzsize ); return $gzdata; } else { wp_cache_debug( 'Sending buffer to browser', 5 ); return $buffer; } }