wp_cache_shutdown_callback() │ WPSCache 1.0
Hooks from the function
Return
null
. Nothing (null).
Usage
wp_cache_shutdown_callback();
wp_cache_shutdown_callback() wp cache shutdown callback code WPSCache 1.12.4
<?php function wp_cache_shutdown_callback() { global $cache_max_time, $meta_file, $new_cache, $wp_cache_meta, $known_headers, $blog_id, $wp_cache_gzip_encoding, $supercacheonly, $blog_cache_dir; global $wp_cache_request_uri, $wp_cache_key, $cache_enabled, $wp_cache_blog_charset, $wp_cache_not_logged_in; global $WPSC_HTTP_HOST, $wp_super_cache_query; if ( ! function_exists( 'wpsc_init' ) ) { /* * If a server has multiple networks the plugin may not have been activated * on all of them. Give feeds on those blogs a short TTL. * ref: https://wordpress.org/support/topic/fatal-error-while-updating-post-or-publishing-new-one/ */ $wpsc_feed_ttl = 1; wp_cache_debug( 'wp_cache_shutdown_callback: Plugin not loaded. Setting feed ttl to 60 seconds.' ); } if ( false == $new_cache ) { wp_cache_debug( 'wp_cache_shutdown_callback: No cache file created. Returning.' ); return false; } $wp_cache_meta['uri'] = $WPSC_HTTP_HOST . preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', $wp_cache_request_uri ); // To avoid XSS attacks $wp_cache_meta['blog_id'] = $blog_id; $wp_cache_meta['post'] = wp_cache_post_id(); $wp_cache_meta['key'] = $wp_cache_key; $wp_cache_meta = apply_filters( 'wp_cache_meta', $wp_cache_meta ); $response = wp_cache_get_response_headers(); foreach ( $response as $key => $value ) { $wp_cache_meta['headers'][ $key ] = "$key: $value"; } wp_cache_debug( 'wp_cache_shutdown_callback: collecting meta data.', 2 ); if ( ! isset( $response['Last-Modified'] ) ) { $value = gmdate( 'D, d M Y H:i:s' ) . ' GMT'; // Don't send this the first time /* @header('Last-Modified: ' . $value); */ $wp_cache_meta['headers']['Last-Modified'] = "Last-Modified: $value"; } $is_feed = false; if ( ! isset( $response['Content-Type'] ) && ! isset( $response['Content-type'] ) ) { // On some systems, headers set by PHP can't be fetched from // the output buffer. This is a last ditch effort to set the // correct Content-Type header for feeds, if we didn't see // it in the response headers already. -- dougal if ( isset( $wp_super_cache_query['is_feed'] ) ) { if ( isset( $wp_super_cache_query['is_sitemap'] ) ) { $type = 'sitemap'; $value = 'text/xml'; } else { $type = get_query_var( 'feed' ); $type = str_replace( '/', '', $type ); switch ( $type ) { case 'atom': $value = 'application/atom+xml'; break; case 'rdf': $value = 'application/rdf+xml'; break; case 'rss': case 'rss2': default: $value = 'application/rss+xml'; } } $is_feed = true; if ( isset( $wpsc_feed_ttl ) && $wpsc_feed_ttl == 1 ) { $wp_cache_meta['ttl'] = 60; } $is_feed = true; wp_cache_debug( "wp_cache_shutdown_callback: feed is type: $type - $value" ); } elseif ( isset( $wp_super_cache_query['is_rest'] ) ) { // json $value = 'application/json'; } else { // not a feed $value = get_option( 'html_type' ); if ( $value == '' ) { $value = 'text/html'; } } $value .= '; charset="' . $wp_cache_blog_charset . '"'; wp_cache_debug( "Sending 'Content-Type: $value' header.", 2 ); @header( "Content-Type: $value" ); $wp_cache_meta['headers']['Content-Type'] = "Content-Type: $value"; } if ( $cache_enabled && ! $supercacheonly && $new_cache ) { if ( ! isset( $wp_cache_meta['dynamic'] ) && $wp_cache_gzip_encoding && ! in_array( 'Content-Encoding: ' . $wp_cache_gzip_encoding, $wp_cache_meta['headers'] ) ) { wp_cache_debug( 'Sending gzip headers.', 2 ); $wp_cache_meta['headers']['Content-Encoding'] = '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 ) { $wp_cache_meta['headers']['Vary'] = 'Vary: ' . $vary_header; } } $serial = '<?php die(); ?>' . json_encode( $wp_cache_meta ); $dir = get_current_url_supercache_dir(); if ( @is_dir( $dir ) == false ) { @wp_mkdir_p( $dir ); } if ( wp_cache_writers_entry() ) { wp_cache_debug( "Writing meta file: {$dir}meta-{$meta_file}", 2 ); $tmp_meta_filename = $dir . uniqid( mt_rand(), true ) . '.tmp'; $final_meta_filename = $dir . 'meta-' . $meta_file; $fr = @fopen( $tmp_meta_filename, 'w' ); if ( $fr ) { fwrite( $fr, $serial ); fclose( $fr ); @chmod( $tmp_meta_filename, 0666 & ~umask() ); if ( ! @rename( $tmp_meta_filename, $final_meta_filename ) ) { @unlink( $dir . $final_meta_filename ); @rename( $tmp_meta_filename, $final_meta_filename ); } } else { wp_cache_debug( "Problem writing meta file: {$final_meta_filename}" ); } wp_cache_writers_exit(); // record locations of archive feeds to be updated when the site is updated. // Only record a maximum of 50 feeds to avoid bloating database. if ( ( isset( $wp_super_cache_query['is_feed'] ) || $is_feed ) && ! isset( $wp_super_cache_query['is_single'] ) ) { $wpsc_feed_list = (array) get_option( 'wpsc_feed_list' ); if ( count( $wpsc_feed_list ) <= 50 ) { $wpsc_feed_list[] = $dir . $meta_file; update_option( 'wpsc_feed_list', $wpsc_feed_list ); } } } } else { wp_cache_debug( "Did not write meta file: meta-{$meta_file}\nsupercacheonly: $supercacheonly\nwp_cache_not_logged_in: $wp_cache_not_logged_in\nnew_cache:$new_cache" ); } global $time_to_gc_cache; if ( isset( $time_to_gc_cache ) && $time_to_gc_cache == 1 ) { wp_cache_debug( 'Executing wp_cache_gc action.', 3 ); do_action( 'wp_cache_gc' ); } }