(PECL memcached >= 0.1.0)
Memcached::cas — Сравнивает и устанавливает значение для записи
$cas_token
,$key
,$value
,$expiration
= 0Memcached::cas() осуществляет проверку и установку значения записи, новое значение будет сохранено, только если другие клиенты не обновили его со времени последнего обращения этим клиентом. Эта проверка осуществляется с помощью параметра cas_token
, который представляет собой 64-битное значение присвоенное существующей записи сервером memcache. Обратитесь к документации метода Memcached::get*(), который используется для получения этого токена. Обратите внимание, что токен представлен в виде числа с плавающей точкой из-за ограничений диапазона значений целочисленного типа в PHP.
cas_token
Уникальное значение, связанное с существующей записью. Генерируется сервером memcache.
key
Ключ, под которым сохраняется значение.
value
Сохраняемое значение.
expiration
Время хранения объекта, по умолчанию равно 0. Для более подробной информации смотрите Время хранения объекта.
Возвращает true
в случае успешного выполнения или false
, если возникла ошибка. Метод Memcached::getResultCode() возвращает Memcached::RES_DATA_EXISTS
если запись которую вы пытаетесь сохранить была изменена с момента последнего обращения.
Пример #1 Пример использования Memcached::cas()
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
do {
$ips = $m->get('ip_block', null, $cas);
if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
$ips = array($_SERVER['REMOTE_ADDR']);
$m->add('ip_block', $ips);
} else {
$ips[] = $_SERVER['REMOTE_ADDR'];
$m->cas($cas, 'ip_block', $ips);
}
} while ($m->getResultCode() != Memcached::RES_SUCCESS);
?>