Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
while(true) {
if (get("lockKey") == 0) {
int counter = increment("lockKey");
try {
if (counter == 1) {
// I'm the winner
set("veryImportantKey", someValue);
break;
}
}
finally {
decrement("lockKey");
}
}
sleep(random());
}
while (true) {
if ($mc->add('lock', getmypid())) {
try {
// ... work work work
} catch (Exception $e) { // no 'finally' in PHP =(
$mc->delete('lock');
throw $e;
}
$mc->delete('lock');
break;
}
usleep(rand(10, 1000));
}
Использование SH абсолютно не снимает проблемы коллизий.
Создать распределенный кэш на база SH возможно.
Как избежать коллизий при записи в Memcache из PHP