Как правильео считивать платежи?

Вопрос чисто теоретический. Надо платежи считывать каждые 5 мин из СRМ и закидывать в бд, далее по этим данным будут рассчитываться балансы клиентов... Первая мысль крон, скрипт берет текущее время и время 5 мин назад и запрашивает платежи в этом промежутке. Не может ли тут быть не дай боже задержки между кроном и сработкой интерпритатора php?

Или вести свой каунтер - хранитьего в базе. Крон и каждый раз - от определенной даты путем простых вычислений получать даты диапазона, и перезаписывать каунтер++?

Может другой вариант?


Ответы (1 шт):

Автор решения: Faraday

С я php мало знаком, но адекватная логика будет выглядеть примерно так:

  • Запускаем фоновую задачу через Cron Expression каждые 5 (или сколько нужно) минут
  • Внутри запрашиваем из базы данных последний сохранённый платёж
  • Смотрим время платежа
  • Запрашиваем из CRM все платежи с датой оплаты больше последнего сохранённого платежа
  • Считаем что нужно
  • Сохраняем данные + дата-время рассчёта
  • Всё сначала

Как минимум такой подход даст вам возможность делать расчёты по историческим данным, если ваш сервер "ляжет" на некоторое время.

Если вам нужно делать расчёт за некий промежуток времени, вы можете так же и запросить нужные вам данные (к примеру, за год). Далее разбиваете их на чанки по времени платежа. После этого прогоняете циклом по готовых чанках и считаете что вам нужно.

Если немного ухитрить, вы сможете даже востановить недостающие исторические данные

→ Ссылка