Opened 14 years ago
Closed 12 years ago
#15548 closed defect (bug) (fixed)
Cache inconsistencies between get_option and get_blog_option
Reported by: | mwidmann | Owned by: | |
---|---|---|---|
Milestone: | 3.5 | Priority: | normal |
Severity: | normal | Version: | 3.0.1 |
Component: | Multisite | Keywords: | caching memcache has-patch |
Focuses: | Cc: |
Description
When an option is updated for a blog update_option
calls wp_cache_set
to update the cache for that option.
The problem comes when the option is accessed through get_blog_option
from another site. There the cache never gets updated (unless the caching - in our case memcached - is recycled.
Steps to reproduce, I'm updating the admin_email
, so be sure to change it back afterwards:
echo "fetching using get_blog_option<br>"; echo get_blog_option( 6, 'admin_email' ); switch_to_blog( 6 ); echo "<br>fetching using get_option before update<br>"; echo get_option( 'admin_email' ); echo "<br>updating...<br>"; update_option( 'admin_email', 'new-value@email.com' ); echo "<br>fetching using get_option after update<br>"; echo get_option( 'admin_email' ); restore_current_blog(); echo "<br>fetching using get_blog_option after uptdate<br>"; echo get_blog_option( 6, 'admin_email' );
The output will look like something similar to this:
fetching using get_blog_option old-value@email.com fetching using get_option before update new-value@email.com updating... fetching using get_option after update new-value@email.com fetching using get_blog_option after uptdate old-value@email.com
If no caching is enabled than - of course - this issue doesn't come up as the value is always fetched form the database.
The best solution most probably would be to modify the either hook into update_option
and delete_option
actions from ms-blogs.php
and then update or delete the value based on the given option.
Change History (9)
#3
@
14 years ago
- Milestone changed from Awaiting Review to Future Release
- Type changed from defect (bug) to enhancement
#4
@
13 years ago
- Keywords changed from caching, memcache to caching memcache
Closed #19822 as a duplicate. Has a patch: ticket:19822:patch.diff.
Here's a way around this limitation, I load it from a mu-plugin.