WordPress.org

Make WordPress Core

Opened 3 years ago

Last modified 19 months ago

#21401 closed enhancement

Load packaged object cache when advanced-cache.php and object-cache.php don't implement wp_cache_init( ) — at Version 11

Reported by: wonderboymusic Owned by:
Milestone: 3.7 Priority: normal
Severity: normal Version: 3.0
Component: Cache API Keywords: has-patch
Focuses: Cc:

Description (last modified by wonderboymusic)

This ticket has 3 purposes:

1) introduces wp_using_ext_object_cache() - mimic wp_suspend_cache_invalidation() and disallow direct access to $_wp_using_ext_object_cache, cleans up importing of globals in functions and provides function to modify that global

2) load the wp-packaged object cache when object-cache.php doesn't implement wp_cache_init()

3) adds file_exists for advanced-cache.php

wp_start_object_cache(), at its core, is on the hunt for wp_cache_init() and then sets the toggle for the external object cache. We only care about the external object cache if it has that function. Rather than throwing a fatal error if their is a missing method, load the default object cache.

If someone installs Memcached properly, then nothing changes - file loads, all is good. If they install a blanks file, the default Object Cache will load. If they install an external object cache without wp_cache_init(), the default cache loads.

IMO - there is no reason to turn off non-persistent caching or throw a fatal error if the author of a cache plugin sucks or the user made a mistake in moving the files.

Change History (12)

comment:1 @tollmanz3 years ago

  • Cc tollmanz@… added

comment:2 @SergeyBiryukov3 years ago

  • Component changed from General to Cache

comment:3 @wonderboymusic3 years ago

Of note - if someone loads an external object cache that doesn't implementl wp_cache_init, the default cache will load and potentially have a bunch of duplicate functions - that will still produce a fatal error and should. This is more for instances where the file is installed wrong or is blank.

comment:4 @jeremyfelt3 years ago

History - 13185 was when previous decision (speed related) was made to not use file_exists() for advanced-cache.php.

comment:5 @wonderboymusic3 years ago

Just did some speed tests - 0.00001 is the difference once APC kicks in. This doesn't affect overall performance in any perceptible way.

comment:6 @mikeschinkel3 years ago

  • Cc mikeschinkel@… added

Related #21412

comment:7 @kurtpayne3 years ago

  • Cc kpayne@… added

comment:8 @nacin3 years ago

If object-cache.php is blank and it gets loaded by default, then you'll get an instant fatal error, pre-patch.

Should this be desired, in the interest of giving a developer proper feedback? As it is, if object-cache.php is installed but incomplete (specifically, missing wp_cache_init()) then with or without the patch, fatal errors will still occur.

WP_CACHE is specifically related to advanced-cache.php, not object-cache.php. So I'm having a hard time separating the two different factors here in the initial bug report. (Part 2)

(1), the wp_using_ext_object_cache() function, is good to me.

comment:9 @nacin3 years ago

  • Type changed from defect (bug) to enhancement

Both of these are enhancements.

comment:10 @wonderboymusic2 years ago

  • Description modified (diff)

I chatted with Jaquith earlier and he pointed out that half of this ticket made no sense - edited!

comment:11 @wonderboymusic2 years ago

  • Description modified (diff)
Note: See TracTickets for help on using tickets.