Download the PHP package sbooker/persistent-pointer without Composer
On this page you can find all versions of the php package sbooker/persistent-pointer. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package persistent-pointer
Read in English
Persistent Pointer (sbooker/persistent-pointer
)
Простая библиотека для создания и управления именованными, персистентными "указателями" — счетчиками, которые могут только увеличиваться.
Назначение библиотеки
При создании фоновых обработчиков (воркеров, консьюмеров) часто возникает задача: как надежно сохранить позицию, на которой остановился обработчик в прошлый раз?
Эта библиотека решает данную задачу, предоставляя Pointer
— простой объект, который хранит именованный целочисленный счетчик в базе данных.
Ключевые особенности
- Персистентность: Состояние указателя сохраняется в хранилище (например, в базе данных).
- Безопасность при конкурентном доступе: Метод
getLocked()
гарантирует, что только один процесс может работать с указателем в один момент времени. - Монотонное возрастание: Значение указателя можно только увеличить с помощью метода
increaseTo()
. Это защищает от случайного "отката" прогресса. - Абстракция над хранилищем: Библиотека не зависит от конкретной ORM благодаря интерфейсу
PointerStorage
.
Установка
Быстрый старт
Шаг 1: Реализуйте PointerStorage
Вам нужно создать "мост" к вашей ORM. Этот адаптер будет использоваться "под капотом" TransactionManager
.
Шаг 2: Соберите Repository
Соберите репозиторий, передав в него вашу реализацию PointerStorage
.
Шаг 3: Используйте в фоновом обработчике
Pointer
идеально раскрывает себя внутри транзакции, управляемой sbooker/transaction-manager
. Это гарантирует, что и обработка данных, и обновление указателя произойдут атомарно.
License
See LICENSE file.