<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
do {
/* busca lista de IP e seu token */
$ips = $m->get('ip_block', null, $cas);
/* se a lista ainda não existir, crie-a e faça
uma adição atômica que falhará se alguém já tiver adicionado i */
if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
$ips = array($_SERVER['REMOTE_ADDR']);
$m->add('ip_block', $ips);
/* caso contrário, adicione o IP à lista e armazene via comparação e troca
com o token, que falhará se outra pessoa atualizar a lista */
} else {
$ips[] = $_SERVER['REMOTE_ADDR'];
$m->cas($cas, 'ip_block', $ips);
}
} while ($m->getResultCode() != Memcached::RES_SUCCESS);
?>