|
@@ -127,7 +127,7 @@ class chctl
|
|
{
|
|
{
|
|
if($item->opened()) {
|
|
if($item->opened()) {
|
|
$usable_items[] = $item;
|
|
$usable_items[] = $item;
|
|
- $item->calc_speed();
|
|
|
|
|
|
+ $item->calc_speed(); //此处必须先计算速率,因为usort函数里面不能使用协程。
|
|
} else {
|
|
} else {
|
|
Log::record("key={$key} has not opened",Log::DEBUG);
|
|
Log::record("key={$key} has not opened",Log::DEBUG);
|
|
}
|
|
}
|
|
@@ -139,53 +139,31 @@ class chctl
|
|
$lproity = $l->priority();
|
|
$lproity = $l->priority();
|
|
$rproity = $r->priority();
|
|
$rproity = $r->priority();
|
|
|
|
|
|
-// if($lproity > $rproity) return 1;
|
|
|
|
-// elseif($lproity < $rproity) return -1;
|
|
|
|
-// else return 0;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ //usort 函数内部,不可使用协程等待之类的代码.
|
|
$lover = $l->speed_overload() ? 1 : 0;
|
|
$lover = $l->speed_overload() ? 1 : 0;
|
|
$rover = $r->speed_overload() ? 1 : 0;
|
|
$rover = $r->speed_overload() ? 1 : 0;
|
|
|
|
|
|
- if($lover == $rover) {
|
|
|
|
- return 0;
|
|
|
|
|
|
+ if($lover == $rover)
|
|
|
|
+ {
|
|
|
|
+ if($lover) {
|
|
|
|
+ return $lproity > $rproity ? -1 : 1; //如果都过载保优先级高的
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ return $lproity < $rproity ? -1 : 1;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
return $lover < $rover ? -1 : 1;
|
|
return $lover < $rover ? -1 : 1;
|
|
}
|
|
}
|
|
-
|
|
|
|
-// if($lover == $rover)
|
|
|
|
-// {
|
|
|
|
-// if($lproity == $rproity)
|
|
|
|
-// return 0;
|
|
|
|
-// else
|
|
|
|
-// return $lproity > $rproity ? -1 : 1; //如果都过载保优先级高的
|
|
|
|
-//// if($lover) {
|
|
|
|
-//// return $lproity < $rproity ? -1 : 1; //如果都过载保优先级高的
|
|
|
|
-//// }
|
|
|
|
-//// else {
|
|
|
|
-//// return $lproity < $rproity ? -1 : 1;
|
|
|
|
-//// }
|
|
|
|
-// }
|
|
|
|
-// else {
|
|
|
|
-// return $lover < $rover ? -1 : 1;
|
|
|
|
-// }
|
|
|
|
};
|
|
};
|
|
|
|
|
|
- Log::record("match usort 1",Log::DEBUG);
|
|
|
|
usort($usable_items, $ascending);
|
|
usort($usable_items, $ascending);
|
|
- Log::record("match usort 2",Log::DEBUG);
|
|
|
|
|
|
|
|
$result = [];
|
|
$result = [];
|
|
foreach ($usable_items as $item) {
|
|
foreach ($usable_items as $item) {
|
|
- if(is_null($item)) {
|
|
|
|
- Log::record("match usort item is null.",Log::DEBUG);
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
$name = $item->name();
|
|
$name = $item->name();
|
|
$result[$name] = $item->speed_overload();
|
|
$result[$name] = $item->speed_overload();
|
|
}
|
|
}
|
|
- Log::record("match usort 3",Log::DEBUG);
|
|
|
|
|
|
|
|
return $result;
|
|
return $result;
|
|
}
|
|
}
|