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; } }