<?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);
?>