TrafficShaperController.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace console\controllers;
  3. use Yii;
  4. use yii\helpers\Json;
  5. use yii\console\Controller;
  6. use common\components\TrafficShaper;
  7. /**
  8. * 令牌桶限流 - 添加器
  9. *
  10. * php ./yii traffic-shaper/run
  11. * php ./yii traffic-shaper/info
  12. *
  13. * Class TrafficShaperController
  14. * @package console\controllers
  15. * @author jianyan74 <751393839@qq.com>
  16. */
  17. class TrafficShaperController extends Controller
  18. {
  19. /**
  20. * 添加令牌数量
  21. */
  22. public function actionRun()
  23. {
  24. $time = Yii::$app->services->config->backendConfig('current_limiting_time');
  25. $routes = Yii::$app->services->config->backendConfig('current_limiting_route');
  26. !is_array($routes) && $routes = Json::decode($routes);
  27. $unit = (int) (60 / $time);
  28. echo '------------------------------- ' . date('Y-m-d H:i:s') . ' -------------------------------' . PHP_EOL;
  29. for ($i = 0; $i < $unit; $i++) {
  30. foreach ($routes as $route) {
  31. (new TrafficShaper($route['num'], $route['route']))->add($route['num']);
  32. echo '「' . $route['route'] . '」 总次数为:' . $route['num'] . PHP_EOL;
  33. }
  34. sleep($time);
  35. }
  36. echo '------------------------------- end -------------------------------' . PHP_EOL;
  37. }
  38. /**
  39. * 查询当前配置
  40. */
  41. public function actionInfo()
  42. {
  43. $routes = Yii::$app->services->config->backendConfig('current_limiting_route');
  44. !is_array($routes) && $routes = Json::decode($routes);
  45. echo '------------------------------- ' . date('Y-m-d H:i:s') . ' -------------------------------' . PHP_EOL;
  46. foreach ($routes as $route) {
  47. $model = new TrafficShaper(0, $route['route']);
  48. echo '「' . $route['route'] . '」 剩余可用次数为:' . $model->info() . PHP_EOL;
  49. }
  50. echo '------------------------------- end -------------------------------' . PHP_EOL;
  51. }
  52. }
粤ICP备19079148号