这是一个 cronjob 脚本。cronjob 每分钟都在运行。
cronjob 是更新数据库中的实时计数器字段。
我有两次和一个计数限制器:
start: 2012-08-29 09:55:00
end: 2012-08-29 19:00:00
limit: 5000
如何从给定的开始日期、结束日期和限制中计算出一个数字以添加到此执行的计数器中?
所以当结束日期结束时,计数器应该与输入的限制一样大
例如,现在我得到了这个:
if ( $setting['limit'] > $setting['counter'] )
{
$rand = rand(5, 300);
DB::update('settings')
->set(array('counter' => DB::expr('counter+ '.$rand)))
->where('id', '=', $setting['id'])
->execute();
}
这只是给了我一个介于 5 到 300 之间的数字,并在每次刷新/执行脚本时添加到计数器中。
有了这个,计数器没有达到限制的可能性很大,例如,如果开始日期和结束日期彼此接近并且随机值低于 100,那么它就不可能达到限制 5000。
那么如何让系统根据开始和结束日期、限制和当前计数计算出正确的比率数以添加到计数器中呢?