我正在运行一个相当大的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命令,那么问题通常会减少,并且更少的博客会得到错误的选项值。
有人对如何解决这个问题有什么建议吗?
我需要制作一些关键的盐吗?