Я пытаюсь использовать memcached с клиентом php (memcached) и C # (enyim).У меня есть сценарий, где я хочу, чтобы CAS значение в php.Для этого я использую следующий код:
$memcached = new Memcached;
$memcached->addServer('localhost', 11211) or die ("Could not connect");
$memcached->setOption(Memcached::OPT_COMPRESSION, false); // the enyim client doesn't support compression
do {
$entries = $memcached->get($theKey, null, $cas);
if ($memcached->getResultCode() == Memcached::RES_NOTFOUND) {
$entry = somearray("foo");
$memcached->add($theKey, $entry);
} else {
$entries[] = "bar";
$memcached->cas($cas, $theKey, $entries);
}
}
while ($memcached->getResultCode() != Memcached::RES_SUCCESS AND $memcached->getResultCode() != Memcached::RES_END);
Для начала все работает хорошо.Но затем, когда CAS-клиент C # имеет то же значение, это идет не так.Php выдает предупреждение по адресу:
$entries = $memcached->get($theKey, null, $cas);
, а именно:
PHP Warning: Memcached::get(): could not uncompress value in ... at line ...
И в результате происходит бесконечный цикл.
Теперь я попытался получить ключ отсервер memcached через telnet и данные были тут же.В php я также могу установить SET для этого ключа без проблем.
Я заметил одну вещь: после того, как у php-клиента было что-то SET, флаг был равен 0. Теперь после того, как у клиента C # есть значение CAS, значение CAS, флаг был 274. Есть ли какое-то столкновение флагов на php lib?Или это что-то еще?
Если кто-нибудь может помочь мне решить эту проблему, я буду благодарен!
lordstyx
[EDIT]
Ну тогда,Поскольку на этот вопрос нет ответа, позвольте мне сказать по-другому.Есть ли способ остановить клиент C # от установки флага 274?