运行flush_all时对象高速缓存(作为后端的Memcached)和wPMU的问题

时间:2013-01-23 作者:Tonny Jørgensen

我正在运行一个相当大的wpmu设置bloggersdelight。dk-在站点上进行更改时,我们有时需要重置对象缓存。当我们这样做的时候,事情就会一团糟。来自站点的选项值混合在一起,博客的homeURL重定向到错误的博客等。

这是当前对象缓存。我正在使用php。

http://pastebin.com/QgM5tR9n

正如您所知,flush函数的创建方式不允许在多站点时进行刷新。这是wordpress上找到的插件的默认设置。组织。为了刷新博客缓存,我需要做一些“有趣”的事情,比如:

switch_to_blog($blogid);

$pattern = "/^" . $blogid . ":/";

$memcache = new Memcache();
$memcache->connect( $server, $port );

$list = array();
$allSlabs = $memcache->getExtendedStats( \'slabs\' );
$items = $memcache->getExtendedStats( \'items\' );
foreach ( $allSlabs as $server => $slabs ) {
foreach( $slabs as $slabId => $slabMeta ) {
if ( !empty( $slabId ) ) {
$cdump = $memcache->getExtendedStats( \'cachedump\', (int) $slabId );
foreach( $cdump as $keys => $arrVal ) {
if ( !is_array( $arrVal ) ) continue;
foreach( $arrVal as $k => $v ) {
if(preg_match($pattern, $k))
{
$list[] = $k;
# $memcache->delete($k);
$parts = explode(":",$k);
print_r($parts);

wp_cache_delete($parts[2],$parts[1]);

}
}
}
}
}
}
return $list;
这似乎适用于单个博客,尽管有些项目无法清除。

不管怎样,当我这样做的时候,问题就出现了

telnet localhost 11211,然后键入flush\\u all

然后事情变得奇怪,博客之间的选项值也变得混杂。如果我多次运行flush\\u all命令,那么问题通常会减少,并且更少的博客会得到错误的选项值。

有人对如何解决这个问题有什么建议吗?

我需要制作一些关键的盐吗?

2 个回复
最合适的回答,由SO网友:Tonny Jørgensen 整理而成

我们升级到wordpress 3.5.1和最新版本的对象缓存。php现在已经解决了这些问题。

SO网友:Weston Ruter

您是否正在运行WordPress 3.5?如果没有,您应该尝试升级,因为博客切换功能的稳定性在this version:

Multisite的switch\\u to\\u blog()现在速度更快,可靠性更高

完成此操作后,请尝试使用Memcached Object Cache plugin 哪一个adds support 对于WordPress 3.5中新的博客切换性能增强:

添加对wp\\u cache\\u switch\\u to\\u blog()的支持。

我们遇到了类似的问题switch_to_blog() WordPress 3.4中的Memcached对象缓存,进行上述更改解决了我们案例中的问题。

结束

相关推荐

有没有人在Dreamhost VPS上成功地使用了WordPress插件w3-Total-cache?

Dreamhost鼓励我使用FCGI、XCache和w3 total cache。但我不确定最佳设置是什么,尤其是对象和数据库缓存。有什么建议吗?此外,我无法消除此错误消息:Recently an error occurred while creating the CSS / JS minify cache 我也无法获取日志文件以显示。。。