mcprohosting/flywheel

响应速率

0.0.4 2014-07-13 03:24 UTC

This package is not auto-updated.

Last update: 2024-09-24 07:47:35 UTC


README

Flywheel 是一个小型的 Laravel 扩展包,用于在不同负载水平下做出不同的响应。它不是一个非常精确的机制 - 它针对速度进行了优化,并设计用于在严格的环境下保持稳定(毕竟这就是它的用途所在!)。它的目的是允许应用程序在高负载情况下,如拒绝服务攻击,放弃一些昂贵但非关键的功能。

它是通过为每个 "flywheel" 存储一个单独的字符串到缓存中来实现这一点的。这非常小,由两个连接的值组成,用于进行线性回归,以确定应用程序在指定时间间隔内的负载。它设计得很快,不是非常精确,并且尽量减少对系统的额外开销。

用法

  1. 使用 Laravel 安装此包。
  2. 注册其服务提供者,Mcprohosting\Flywheel\FlywheelServiceProvider
  3. 您可能希望将其外观注册为别名,"Flywheel" => "Mcprohosting\Flywheel\Flywheel"
  4. 盈利?

工厂方法: Flywheel::make(string $name, float $interval, callable|array $level)

实例化一个新的 Flywheel。 $name 是一个相当任意的字符串,仅用于将给定的轮与缓存进行标识。 $interval 应该是您想 "监控" 的给定时间间隔,以秒为单位。 $level 应该是一个数组,其键是需要达到该 "级别" 的调用次数,值是在每个级别上调用的可调用对象。例如

$wheel = Flywheel::make('loadStatus', 3, array(
    0  => function ($name) { echo "Load is A-Okay, $name!"; },
    10 => function ($name) { echo "We're getting some load, $name."; },
    50 => function ($name) { echo "We have so much load, $name!"; }
));

$wheel->spin('Connor');

现在,如果在这个时间段内这个页面有零到十位访客,它将显示第一条消息:"负载一切正常,Connor!" 如果访客在十到五十之间,它将显示第二条消息。如果访客超过五十,将显示第三条消息。您可能已经注意到,传递给 spin() 的任何参数都将作为参数传递给当前级别的调用对象。

您还可以动态声明级别。这可能更可取,因为您可以在应用程序启动时创建轮,但将逻辑绑定到必要的地点和时间。

$wheel = Flywheel::make('loadStatus', 3);
$wheel->addLevel(0, function ($name) { echo "Load is A-Okay, $name!"; });
$wheel->addLevel(10, function ($name) { echo "We're getting some load, $name."; });
$wheel->addLevel(50, function ($name) { echo "We have so much load, $name!"; });

$wheel->spin('Connor');