Я боролся с проблемой в течение некоторого времени и решил обратиться за помощью.
Сценарий:
В онлайн-игре у пользователя есть «валюта», некоторые пользователи получают бонус в этой валюте, бонус должен даваться каждый день в течение определенного периода времени 24 часа с динамической квотой. В конце дня квота должна быть предоставлена пользователю.
Максимальная квота — это количество минут в дне. Валюта не может быть увеличена более чем на одну каждую минуту. Валюта, которую пользователь в данный момент хранит в базе данных, отображается в рейтинге на странице, фактически рейтинг упорядочен по этой валюте
У пользователя А есть квота 100, поэтому он должен получать 100 валют в день, распределенных по времени, и это основная идея — распределять квоту за день.
Каждую минуту выполняется cronjob, я смоделировал это и заставил его работать здесь:
$minutesSinceMidnight = 0;
$dailyQuota = 100;
$result = 0;
do {
if(!($minutesSinceMidnight % floor(1440 / $dailyQuota)))
{
$result += 1;
echo "Minutes since Midnight ".$minutesSinceMidnight. " result ". $result."\n";
}$minutesSinceMidnight += 1;
}
while($minutesSinceMidnight != 1440);
echo "We got ". $result;
Проблема в том, что это довольно неточно, у вас есть предложения, как решить эту проблему лучше?
Задача ещё не решена.
Других решений пока нет …