在php's memcached中为单独的set()调用设置压缩标志的最佳方法是什么?


What's the best way to set the compression flag for individual set() calls in php's memcached?

我正在从memcache迁移到memcached,我注意到的一个差异是压缩标志似乎是为所有 set()调用设置的,而不是像memcache那样以个人为基础。

这是每个连接设置,还是我可以打开或关闭它?如果是后者,那么为每个set()调用设置压缩标志的最佳方法是什么?

目前我正在考虑这样做:

<?php
    if ($compress) $mc->setOption(Memcached::OPT_COMPRESSION,true);
    $return = $mc->set($key,$object,$expiration);
    if ($compress) $mc->setOption(Memcached::OPT_COMPRESSION,false);

这是正确的方法吗?

我也像这样设置$mc,如果它有任何不同:

<?php
    $mc = new Memcached("cl");
    $mc->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);
    $mc->setOption(Memcached::OPT_BINARY_PROTOCOL,true);
    if (count($mc->getServerList()) === 0) {
        $mc->addServers(array (
            array ($GLOBALS["mc"]["host"],$GLOBALS["mc"]["port"]),
        ));
    }

谢谢!

看看这两个方法的签名,并阅读Memcached的源代码,我认为不可能为每个set设置它。

在github上查看php-memcached-dev,查找php_memcached.c (顺便说一下,这个客户的名字真蠢。Memcached过去是指服务器守护进程,现在是指服务器和客户端,你不能再谷歌了