|
@@ -258,7 +258,7 @@ class Quality
|
|
|
return [$all_qualities, true];
|
|
|
}
|
|
|
|
|
|
- $times_checker = function ($cur_quality_match_ratio, $qualities, $used_times) use ($cur_quality, $mchid, $ch_filter)
|
|
|
+ $times_checker = function ($qualities) use ($cur_quality, $mchid, $ch_filter)
|
|
|
{
|
|
|
$result = [];
|
|
|
$pre_times = 0;
|
|
@@ -275,20 +275,18 @@ class Quality
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $qtimes = $this->mRatioCtl->times($mchid, $quality);
|
|
|
- [$times,$used_time] = $ch_filter->total($cur_quality);
|
|
|
+ $qua_times = $this->mRatioCtl->times($mchid, $quality);
|
|
|
+ [$cur_times,$used_time] = $ch_filter->total($cur_quality);
|
|
|
|
|
|
- if ($qtimes == false) {
|
|
|
+ if ($qua_times == false) {
|
|
|
continue;
|
|
|
} else {
|
|
|
- $pre_times += $qtimes;
|
|
|
+ $pre_times += $qua_times;
|
|
|
}
|
|
|
|
|
|
if($compare == false) continue;
|
|
|
|
|
|
- if ($cur_quality_match_ratio) {
|
|
|
- $result[] = $quality;
|
|
|
- } elseif ($used_times < $pre_times) {
|
|
|
+ if ($cur_times < $qua_times) {
|
|
|
$result[] = $quality;
|
|
|
}
|
|
|
}
|
|
@@ -296,6 +294,57 @@ class Quality
|
|
|
return $result;
|
|
|
};
|
|
|
|
|
|
+ $calc_pertime = function ($per_secs, $cur_times, $cur_usedtime)
|
|
|
+ {
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ $time_checker = function ($qualities,$left_time) use ($cur_quality, $mchid, $ch_filter, $used_time)
|
|
|
+ {
|
|
|
+
|
|
|
+ $compare = $cur_quality > 0 ? false : true;
|
|
|
+
|
|
|
+ foreach ($qualities as $quality)
|
|
|
+ {
|
|
|
+ if($compare == false)
|
|
|
+ {
|
|
|
+ if($quality == $cur_quality) {
|
|
|
+ $compare = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $per_secs = $this->mSpeeds[$quality]['per_secs'];
|
|
|
+ $qua_secs = $this->mRatioCtl->seconds($mchid, $quality);
|
|
|
+ [$cur_times,$cur_usedtime] = $ch_filter->total($cur_quality);
|
|
|
+
|
|
|
+ if ($qua_secs == false) continue;
|
|
|
+
|
|
|
+ if($cur_times === 0 or $cur_usedtime) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Log::record("left_time=$left_time quality=$quality secs=$qua_secs", Log::DEBUG);
|
|
|
+
|
|
|
+
|
|
|
+ if ($left_time - $qsecs > 0) {
|
|
|
+ //时间满足该质量配置
|
|
|
+ $left_time -= $qsecs;
|
|
|
+ $result[] = $quality;
|
|
|
+ } elseif ($left_time - $per_secs > 0) {
|
|
|
+ //时间够跑一次,不能再找其它质量
|
|
|
+ $result[] = $quality;
|
|
|
+ break;
|
|
|
+ } else {
|
|
|
+ //时间完全不够跑一次
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($quality == $cur_quality) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
$timeout_checker = function ($match_ratio, $qualities, $left_time) use ($cur_quality, $mchid)
|
|
|
{
|
|
|
if($match_ratio)
|
|
@@ -385,7 +434,8 @@ class Quality
|
|
|
[$match_ratio, $can_last] = $this->mRatioCtl->ratio_match($mchid, $org_quality, $card_type, $spec, $all_qualities);
|
|
|
Log::record("ratio_phone_quality mchid=$mchid must calc next quality match_ratio=$match_ratio can_last=$can_last", Log::DEBUG);
|
|
|
|
|
|
- $times_qualities = $times_checker($match_ratio, $all_qualities, $used_times);
|
|
|
+// $times_qualities = $times_checker($match_ratio, $all_qualities, $used_times);
|
|
|
+ $times_qualities = $times_checker($all_qualities);
|
|
|
$qualities_log("ratio_phone_quality $mchid-$card_type-$spec times_qualities", $times_qualities);
|
|
|
|
|
|
$timeout_qualities = $timeout_checker($match_ratio, $all_qualities, $left_time);
|