Laravel Usage Limiter - Správa limitů rychlosti a využití

Úvod V průběhu let, Vytvořil jsem mnoho aplikací SaaS založených na Laravelu.. Jeden z základní a společná vlastnost v téměř jakémkoli SaaS aplikace je na řídit spotřebu uživatelů...

Světlý režim slouží jen pro ukázku funkcionality. Proto používejte tmavou verzi webu.

21. 10. 2024

Laravel Usage Limiter - Správa limitů rychlosti a využití

Úvod

V průběhu let, Vytvořil jsem mnoho aplikací SaaS založených na Laravelu.. Jeden z základní a společná vlastnost v téměř jakémkoli SaaS aplikace je na řídit spotřebu uživatelů, účty nebo týmy. Stránky cíl je zajistit, aby uživatelé nadměrně nevyužívali zdroje, ať už jde o volání API., limity pro zasílání zpráv nebo cokoli jiného, co vyžaduje kontrolu. Proto jsem vytvořil balíček Laravel, který přesně toto dělá --- Omezovač používání Laravelu.

Omezovač používání Laravelu vám pomůže sledovat a omezit, jak často mohou uživatelé používat nebo využívat určitou funkci v aplikaci po určitou dobu (např. omezit počet volání API na 100 za den). Definováním vlastních limitů můžete začít spravovat věci, jako jsou limity požadavků API, limity pro odesílání zpráv nebo jakékoli jiné funkce řízeného používání.

V tomto tutoriálu vás provedu instalací a použitím tohoto balíčku v aplikaci Laravel, přičemž vše bude velmi jednoduché. Pojďme se do toho ponořit!

Požadavek

Laravel verze 8.0 nebo vyšší.

Instalace

Pomocí správce balíčků Composer nainstalujte nástroj Laravel Usage Limiter:

composer require nabilhassen/laravel-usage-limiter

Dále byste měli publikovat konfigurační a migrační soubory omezovače použití Laravel pomocí příkazu vendor:publish Artisan.

php artisan vendor:publish --provider="NabilHassen\LaravelUsageLimiter\ServiceProvider"

Nakonec byste měli spustit příkaz migrate, abyste vytvořili potřebné tabulky.

php artisan migrate

Příklad použití

Předpokládejme tedy, že pracujeme na aplikaci elektronického obchodu poháněné systémem Laravel, kde mohou dodavatelé nabízet a prodávat své produkty. Naše aplikace má dva plány: Pro a Premium. Každý z těchto plánů má svá omezení, jak je popsáno níže.

  • Pro: 20 produktů
  • Premium: 50 produktů

Prvním krokem tedy bude použití HasLimits na modelu, který chceme sledovat, což je pravděpodobně uživatelský model.

use NabilHassen\LaravelUsageLimiter\Traits\HasLimits;
 
class User extends Authenticatable
{
use HasLimits;
}

Dále definujme naše plány s jejich limity.

namespace Database\Seeders;
 
use Illuminate\Database\Seeder;
use NabilHassen\LaravelUsageLimiter\Models\Limit;
 
class PlanSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// Pro plan can create 20 products
Limit::create([
'name' => 'products',
'allowed_amount' => 20,
'plan' => 'pro',
'reset_frequency' => 'every month',
]);
 
// Premium plan can create 50 products
Limit::create([
'name' => 'products',
'allowed_amount' => 50,
'plan' => 'premium',
'reset_frequency' => 'every month',
]);
}
}

Jakmile je náš seeder připraven, můžeme spustit php artisan db:seed PlanSeeder. Skvělé!

Ve vašem User po vytvoření uživatele byste k němu měli připojit limit.

namespace App\Http\Controllers;
 
class UserController
{
public function store(Request $request) {
$user = User::create($request->validated());
 
$user->setLimit('products', 'pro');
}
 
public function destroy(User $user) {
$user->unsetLimit('products', 'pro');
 
$user->delete();
}
}

Nyní v naší ProductController třída, kdykoli se dodavatel (tj. uživatel) pokusí vytvořit produkt, můžeme zkontrolovat jeho limity a rozhodnout, zda smí vytvořit více produktů, nebo ne, a mezitím sledovat jeho limity.

namespace App\Http\Controllers;
 
class ProductController
{
public function store(Request $request) {
abort_if(! auth()->user()->hasEnoughtLimit('products'), 403);
 
Product::create($request->validated());
 
auth()->user()->useLimit('products');
}
 
public function destroy(Product $product) {
$product->delete();
 
auth()->user()->unuseLimit('products');
}
}

Vše je připraveno! Vaše aplikace je nyní připravena sledovat a spravovat zdroje a spotřebu uživatelů.

Pojďme ještě o krok dál. Na začátku tohoto návodu, když jsme definovali naše plány a limity, jsme také nastavili frekvenci resetování pro každý z našich limitů jako every month.

Omezovač používání Laravelu obsahuje integrované nástroje příkazového řádku. Jeden z dostupných příkazů použijeme k automatickému obnovení limitů uživatelů na základě frekvence obnovování, kterou jsme nastavili dříve.

// app/Console/Kernel.php
protected function schedule(Schedule $schedule)
{
...
// Laravel <= 11
$schedule->command('limit:reset')->everyMinute();
 
// Laravel >= 10
$schedule->command('limit:reset')->everySecond();
...
}

👏👏 Vaše aplikace je připravena spravovat, sledovat, omezovat a automaticky resetovat limity uživatelů.

Další funkce

Co jsme implementovali do tohoto bodu pravidelné implementace Omezovač používání Laravelu balíček. Balíček nabízí i další funkce, které si můžete prohlédnout na stránkách Repozitář GitHub.

Závěr

Souhrnně lze říci, že Omezovač používání Laravelu je mocným nástrojem pro všechny vývojáře Laravelu, kteří chtějí zavést omezení používání ve svých aplikacích. Ať už vytváříte produkt SaaS nebo jednoduchou funkci, tento balíček vám umožní snadno sledovat a spravovat spotřebu uživatelů a zároveň vám poskytne flexibilitu při definování vlastních limitů. Podle kroků popsaných v tomto návodu můžete do své aplikace rychle integrovat sledování spotřeby a zajistit, aby uživatelé nepřekračovali stanovené meze.

Nezapomeňte si prohlédnout další funkce, které balíček nabízí v úložišti GitHub. Se správnou konfigurací budete na dobré cestě k vytvoření robustní aplikace, která bude mít správu zdrojů pod kontrolou.

💻 --- Šťastné kódování!

Původní článek publikoval Nabil Hassen.

Mohlo by vám pomoct

Praktické věci kolem webu

Než se pustíte do webu, hodí se mít jasno v podkladech, WordPressu, cookies a měření.

Google reference

Co říkají klienti

Ukázky skutečných recenzí, které klienti zanechali na mém Google profilu.

Přejít na recenze
★ ★ ★ ★ ★

„Člověk, který své práci a rozumí a ví co dělá. Velmi rychlá komunikace a profesionální přístup. Doporučuji.“

Jaroslav Kupča
Google
★ ★ ★ ★ ★

„Skvělá spolupráce, při dalších projektech určitě nebudu shánět někoho jiného.“

Roman Koňařík
Google
★ ★ ★ ★ ★

„S panem Vančurou jsem spolupracovala na tvorbě mých webových stránek a jsem maximálně spokojená. Oceňuji profesionální přístup, rychlou komunikaci a schopnost přesně pochopit moje představy. Web je moderní, přehledný, funkční a skvěle vypadá i na mobilu. Celý proces proběhl hladce, s jasným vysvětlením jednotlivých kroků a výborným výsledkem. Určitě doporučuji každému, kdo hledá spolehlivý a kvalitní přístup.“

Barbora Zemánková
Google
★ ★ ★ ★ ★

„Spolupráce při tvorbě konfigurátoru proběhla naprosto bez problémů. Oceňuji profesionální přístup, rychlou komunikaci a schopnost pochopit specifický projekt od A do Z. Konfigurátor je přehledný, funkční a přesně odpovídá mým požadavkům. Rozhodně doporučuji.“

mareksevcik_FPV
Google
★ ★ ★ ★ ★

„Velmi dobrá a rychlá spolupráce. Doporučuji!“

Leoš Kaucký
Google
★ ★ ★ ★ ★

„Přesně takto si představujeme profesionální práci. Dekujeme“

STAVILLI
Google
★ ★ ★ ★ ★

„Ať už se jedná o optimalizaci webu, nebo tvorbu na míru oceňuji kromě profesionální práce a znalostí problematiky také férový přístup a komunikaci.“

Aleš Illický
Google
★ ★ ★ ★ ★

„Děkuji za profesionální spolupráci, vše dle domluvy, naprostá spokojenost a mohu jen vřele doporučit.... Při dalších projektech určitě opět využiji Vašich služeb“

Peter Spilak
Google
★ ★ ★ ★ ★

„Profesionalita a velká ochota, nemohu jinak než doporučit“

Magdalena Vašková
Google
★ ★ ★ ★ ★

„Skvělá zkušenost při tvorbě webu, profesionální přístup, rychlost, ochota pomoci“

Jana Kono
Google
★ ★ ★ ★ ★

„Rychlá spolupráce a komunikace – mohu jen doporučit.“

Gawix
Google
★ ★ ★ ★ ★

„Moc mi pomohl, když jsem potřebovala pomoc s webem. A bylo to gratis :)). Jsem mu neskonale vděčná.“

Radka Arbesová
Google
★ ★ ★ ★ ★

„Děkuji Jiřímu za rychlou a kvalitní spolupráci na tvorbě webu. Srozumitelná a ochotná komunikace mě vždycky potěší a přináší důvěru.“

Jiří Mařík
Google
★ ★ ★ ★ ★

„Jsem maximálně spokojená. Rychlost, ochota a cenově dostupné. Děkuji“

Veronika Černá
Google
★ ★ ★ ★ ★

„Naprostá spokojenost. Rychlá komunikace, skvělá cena a odborná pomoc. Moc děkuji :)“

Patricie Kučerová
Google
★ ★ ★ ★ ★

„Velká spokojenost, rychlost a p. Vančura moc dobře ví co dělá. :)“

Ondřej Daniško
Google
★ ★ ★ ★ ★

„dobrá práce, rychlá odezva“

Zuzana Jírová
Google
★ ★ ★ ★ ★

„S programátory mám zkušeností hodně, ale tady musím opravdu pochválit. Pro mě a mé přátele vytvořil skvělý nástroj na evidenci sbírek a opravdu se to povedlo. Bylo to hotové rychle, kvalitně a za skvělou cenu. Komunikace funguje velmi rychle, což je super a ne úplně standard. Díky za super práci, za mě 100% spokojenost!“

Zdeněk
Google
★ ★ ★ ★ ★

„Vše bylo rychlé a hlavně to funguje. Dobrá práce.“

Lukáš Bartášek
Google
★ ★ ★ ★ ★

„Normálně recenze nepíši, ale zde rád doporučím kvalitní práci. Jiří pro mě vytvořil web pro dětské tábory. Kvalitní práce, rychlá komunikace a vlastní nápady, které Jiří sám přidá, jsou na velice vysoké úrovni. Nemohu hodnotit jinak než 5/5.“

Tomáš Loněk
Google
★ ★ ★ ★ ★

„Pan Jiri nam delal jiz 3 webove stranky a vzdy velka spokojenost, je mega rychly a vse hned kladne vyridi, mohu pouze doporucit. Poradi si bez problemu i s rezervacnimi kalendaremi, udrzbou socialnich siti, atd.“

Barbara Mašková
Google