WordPress.org

Make WordPress Core

Opened 11 months ago

Last modified 5 weeks ago

#21401 new enhancement

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

Reported by: wonderboymusic Owned by:
Priority: normal Milestone: Future Release
Component: Cache Version: 3.0
Severity: normal Keywords: has-patch
Cc: tollmanz@…, mikeschinkel@…, kpayne@…, aaroncampbell

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.

Attachments (2)

using-ext-function.diff (8.3 KB) - added by wonderboymusic 11 months ago.
21401-r1.diff (8.3 KB) - added by devesine 3 months ago.
Refreshed patch against r23698.

Download all attachments as: .zip

Change History (18)

comment:1 tollmanz11 months ago

  • Cc tollmanz@… added

comment:2 SergeyBiryukov11 months ago

  • Component changed from General to Cache

comment:3 wonderboymusic11 months 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 jeremyfelt11 months ago

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

comment:5 wonderboymusic11 months 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 mikeschinkel11 months ago

  • Cc mikeschinkel@… added

Related #21412

comment:7 kurtpayne11 months ago

  • Cc kpayne@… added

comment:8 nacin10 months 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 nacin10 months ago

  • Type changed from defect (bug) to enhancement

Both of these are enhancements.

comment:10 wonderboymusic7 months ago

  • Description modified (diff)

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

comment:11 wonderboymusic7 months ago

  • Description modified (diff)

comment:12 scribu7 months ago

Related: #22661

comment:13 aaroncampbell5 months ago

  • Cc aaroncampbell added

comment:14 wonderboymusic5 months ago

  • Keywords needs-refresh added
  • Milestone changed from Awaiting Review to 3.6

devesine3 months ago

Refreshed patch against r23698.

comment:15 devesine3 months ago

  • Keywords needs-refresh removed

comment:16 ryan5 weeks ago

  • Milestone changed from 3.6 to Future Release
Note: See TracTickets for help on using tickets.