Задать вопрос
passshift
@passshift
php, js, html5, css

Как гарантировать списание денег с баланса?

Здравствуйте!

Есть бухгалтерская фирма, обслуживаем клиентов, клиенты платят абонентку, нужно организовать ежедневное списание с баланса. Нужно чтобы с балансов списывались деньги гарантированно, с гарантией отсутствия повторов и параллельных списаний.

Есть 2 способа:

1. CRON
2. В момент когда юзер логинится, но этот метод не катит т.к. нужно списывать вне зависимости от того заходит юзер или нет и отправлять уведомления о том, что баланс приближается к 0.

Что касается CRONа, мы тут обсуждали, и сразу вопросы: а что если сервер упадет, а что если крон выполнится несколько раз и т.д., я понимаю, что можно мутить с историей списание (она полюбому нужна), и при списании сверяться, но это не дает гарантии от параллельного списания.

Хочется услышать мнение тех, кто уже проходил это, интересует сама логика и инструменты. Спасибо!
  • Вопрос задан
  • 231 просмотр
Подписаться 1 Простой 2 комментария
Решение пользователя Павел Новиков К ответам на вопрос (5)
paulfcdd
@paulfcdd
PHP/Sf/WEB developer
Вам нужен Cron для такого чего-то.
что если крон выполнится несколько раз
- это говорит о том, что вы не до конца понимаете, как работает крон, вам нужно почитать доки. Крон - это серверный демон, он выполняется сугубо по определенным датам/времени, вернее он вызываает команду, которая должна исполняться. нет возможности, чтобы крон выполнился 2 раза за день, если сконфигугрирован выполняться 1 раз в день.
а что если сервер упадет
- если у вас упадет сервер, то не важно, что вы будете использовать, крон или не крон, у вас просто все перестанет работать.
Кроме того, можно в таблицу где у вас хранятся данные о списании, добавить дату списания, и сверяться по ней, что даст гарантию того, что если дата списания сегодняшняя, то не списывать и тд. Вообще, такс на самом деле очень простой, заключается в конфигурации крона и написании достаточно простой команды для него с не очень сложной логикой и логгированием каждого списания.
Ответ написан