Приятель попросил помочь с простеньким биллингом, нужно организоваться "живой" баланс с которого ежедневно списывается определенная тарифом сумма.
Какие нюансы и как это лучше организовать?
Пока я планирую с началом новых суток запускать cron-ом скрипт, который будет пробегаться по всем юзерам и списывать с их баланса определенные суммы, если на балансе акка нехватка средств, то блокировать и высылать уведомление по почте, но еще хотелось бы заранее слать уведомление, например "Через 3 дня ваш акк будет залочен", как такое правильно организовать?
Да мне кажется правильный подход, только я бы сделал вот какой нюанс - я записывал бы для каждого акка последнюю дату за которую было списание (не лог - лог это само собой, а прямо в таблицу) и скрипт бы списывал не просто сумму при запуске, а вычислял количество дней от даты последнего списания до сегодня и списывал бы за это количество дней. Так решаются сразу несколько проблем:
Если в один из дней скрипт упадет и этого никто не заметит, то в следующий все спишется правильно и за тот день и за предыдущий.
Если это заметят, то скрипт можно будет легко запустить повторно - он не спишет деньги по второму разу с тех с кого уже списал.
Если по каким-то непонятным причинам скрипт запустится дважды в одни и те же сутки (ну собьется дата хотя бы) - катастрофы не произойдет.
Может есть варианты и лучше, но я бы делал так.
Suntechnic: да я бы так и сделал, но у кого-то допустим 50 рублей хватает на 7 дней, а у другого человека подключено в 10 раз больше различных услуг и у него абонентка 200 рублей в день.