12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace refill;
- class try_judge
- {
- private $mReloadTime;
- private $mMchTimeings;
- const MAX_LEFT_SECS = 600;
- public function __construct()
- {
- $this->load();
- }
- public function load()
- {
- global $config;
- $mch_times = $config['cancel_retry_time'] ?? [];
- $date = date('Y-m-d',time());
- $this->mReloadTime = strtotime($date) + 86400;
- $this->mMchTimeings = [];
- if(empty($mch_times)) return;
- foreach ($mch_times as $mchid => $timings)
- {
- $tstamps = [];
- foreach ($timings as $timing) {
- $tstamps[] = strtotime("{$date} {$timing}");
- }
- rsort($tstamps);
- if(!empty($tstamps)) {
- $this->mMchTimeings[$mchid] = $tstamps;
- }
- }
- }
- public function can_try($mchid,$quality)
- {
- if($quality != Quality::Normal) {
- return true;
- }
- if(time() >= $this->mReloadTime) {
- $this->load();
- }
- if(array_key_exists($mchid,$this->mMchTimeings))
- {
- $tstamps = $this->mMchTimeings[$mchid];
- $cursec = time();
- foreach ($tstamps as $tstamp)
- {
- if($cursec < $tstamp && $cursec + try_judge::MAX_LEFT_SECS > $tstamp) {
- return false;
- }
- }
- }
- return true;
- }
- }
|