mcprohosting / flywheel
响应速率
Requires
- php: >=5.4.0
- illuminate/cache: 4.*
- illuminate/support: 4.*
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: 3.7.*
- satooshi/php-coveralls: v0.6.0
This package is not auto-updated.
Last update: 2024-09-24 07:47:35 UTC
README
Flywheel 是一个小型的 Laravel 扩展包,用于在不同负载水平下做出不同的响应。它不是一个非常精确的机制 - 它针对速度进行了优化,并设计用于在严格的环境下保持稳定(毕竟这就是它的用途所在!)。它的目的是允许应用程序在高负载情况下,如拒绝服务攻击,放弃一些昂贵但非关键的功能。
它是通过为每个 "flywheel" 存储一个单独的字符串到缓存中来实现这一点的。这非常小,由两个连接的值组成,用于进行线性回归,以确定应用程序在指定时间间隔内的负载。它设计得很快,不是非常精确,并且尽量减少对系统的额外开销。
用法
- 使用 Laravel 安装此包。
- 注册其服务提供者,
Mcprohosting\Flywheel\FlywheelServiceProvider - 您可能希望将其外观注册为别名,
"Flywheel" => "Mcprohosting\Flywheel\Flywheel" - 盈利?
工厂方法: 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');