Каков наилучший способ установить флаг сжатия для отдельных вызовов set () в memcached php? - PullRequest
2 голосов
/ 11 апреля 2011

Я перехожу с memcache на memcached , и я заметил одно из отличий, что флаг сжатия установлен для all 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"]),
        ));
    }

Спасибо!

1 Ответ

2 голосов
/ 13 апреля 2011

Взглянув на сигнатуру двух методов , а также читая источник Memcached, я думаю, что невозможно установить его для каждого set.

Смотрите php-memcached-dev на github, ищите php_memcached.c

(Кстати, какое глупое имя для клиента. Memcached имел в виду серверный демон,теперь это означает сервер и клиент, вы просто не можете больше гуглить.)

...