среда, 27 октября 2010 г.

php Counter

Выложил на github.com свой класс Counter
В основном сделал это что бы потестить сам GitHub
Адрес страницы на гитхабе: http://github.com/valmat/MC_Counter
Как использовать:

class Counter
Это образец реализации счетчика на memcache
Можно построить другие реализации на общем интерфейсе
Сохранение результатов применения значений счетчика осуществляется по заданному числу.
Можно реализовать сохранение по заданному интервалу времени
*
Конструктор принимает три аргумента: ключ, имя слота, и идентификатор для инициализации слота.
Для чего это сделано: инримент счетчика должен быть очень быстрой операцией.
Не целесообразно тратить время и сстемные ресурсы на создание объетов, которые е будут использовны.
Поэтому передается только имя слот класа, который создается только в случае необходимости.
К таким случаям относитсяя обмен данными между локальным и постоянным хранилищем счтчика.
Слоты необхоимы, так как Counter не может знать о способе хранения данных в постоянном хранилище и путях доступа к ним.
Для предотвращения состаяния гонки, необходим механизм блокировок.
При наличии блокировки, процессы не получившие эксклюзивные права на получение данных будут писать во временное хранилище, а процесс,
установивший блокировку по окончанию своей работы инкриментирует счетчик данными из временного хранилища
*
При сбросе данных в постоянное хранилище по условию достежения кратности значения счетчика ($this->Val%$this->upd_delim),
блокировка не требуется, т.к. в этом случае (при достаточно большом значении $this->upd_delim) в текущий момент времени только один процесс
приходит к неоходимости сброса данных

Пример использования:
*
$cnt = new Counter('anykey', 'AnySlot',15);
echo $cnt->increment();
echo $cnt->get();
echo $cnt->set(11);

Комментариев нет:

Отправить комментарий