লারাভেল রেট লিমিটিং (Laravel Rate Limiting)

Web Development - লারাভেল (Laravel) - লারাভেল এডভান্স (Laravel Advance) |
6
6

লারাভেল (Laravel) একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা ডেভেলপারদের ওয়েব অ্যাপ্লিকেশন তৈরি করতে নানা ধরনের সুবিধা দেয়। এর মধ্যে একটি গুরুত্বপূর্ণ ফিচার হল রেট লিমিটিং (Rate Limiting), যা বিশেষভাবে ওয়েব অ্যাপ্লিকেশন বা API এর মধ্যে নির্দিষ্ট সময়ের মধ্যে কতবার কোনো নির্দিষ্ট কাজ করা যাবে তা নিয়ন্ত্রণ করতে সাহায্য করে।

রেট লিমিটিং কি?

রেট লিমিটিং হল একটি পদ্ধতি যার মাধ্যমে আপনি নির্দিষ্ট সময়ের মধ্যে কতবার একটি একশন (যেমন API কল বা HTTP রিকোয়েস্ট) গ্রহণ করা যাবে তা সীমাবদ্ধ করেন। এটি স্প্যামিং, অতিরিক্ত লোড এবং সিস্টেমের অপব্যবহার রোধ করতে সহায়তা করে। লারাভেল এই ফিচারটি অন্তর্ভুক্ত করেছে যাতে ডেভেলপাররা সহজেই রেট লিমিটিং পরিচালনা করতে পারেন।

রেট লিমিটিং এর ব্যবহার

লারাভেলে রেট লিমিটিং ব্যবহারের জন্য কিছু স্টেপ অনুসরণ করতে হয়:

১. রেট লিমিটিং কনফিগারেশন

লারাভেলের রেট লিমিটিং কনফিগারেশন app/Http/Kernel.php ফাইলে করা হয়। এখানে আপনি যে রুটগুলোতে রেট লিমিটিং প্রয়োগ করতে চান, সেগুলোর জন্য লিমিট ও সময়সীমা নির্ধারণ করতে পারেন।

উদাহরণস্বরূপ, যদি আপনি চান যে একটি API রুটে প্রতি মিনিটে ৬০টি রিকোয়েস্ট গ্রহণ করা যাবে, তবে সেটি নিম্নরূপ কনফিগার করা যেতে পারে:

use Illuminate\Cache\RateLimiter;

class Kernel extends HttpKernel
{
    protected $routeMiddleware = [
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    ];

    protected function schedule(Schedule $schedule)
    {
        $this->rateLimiter()->for('api', function (RateLimiter $rateLimiter) {
            return $rateLimiter->hit('api:limit', 60, 1);
        });
    }
}

২. রেট লিমিটিং মিডলওয়্যার (Middleware)

লারাভেলে রেট লিমিটিং প্রয়োগ করার জন্য ThrottleRequests মিডলওয়্যার ব্যবহৃত হয়। এই মিডলওয়্যারটি API বা ওয়েব রুটে প্রয়োগ করা হয়, যা কনফিগারেশন অনুযায়ী রিকোয়েস্ট লিমিট করে দেয়।

যেমন, api গ্রুপ রুটের জন্য নিম্নলিখিতভাবে রেট লিমিটিং প্রয়োগ করা যায়:

Route::middleware('throttle:60,1')->group(function () {
    Route::get('/user', function () {
        return 'User data';
    });
});

এখানে, 60 হলো এক মিনিটে অনুমোদিত রিকোয়েস্টের সংখ্যা এবং 1 হলো সময়সীমা (মিনিটে)।

৩. কাস্টম রেট লিমিটিং

লারাভেল আপনাকে কাস্টম রেট লিমিটিং নিয়ন্ত্রণ করতে দেয়। উদাহরণস্বরূপ, আপনি চান যে শুধুমাত্র কিছু নির্দিষ্ট আইপি এড্রেসে রেট লিমিটিং প্রয়োগ হোক, আপনি সেই কনফিগারেশনটি RouteServiceProvider অথবা রুট ম্যানেজমেন্টের মধ্যে সেট করতে পারেন।

Route::middleware('throttle:120,1')->get('/user', function () {
    return 'User data';
});

এখানে ১ মিনিটে ১২০টি রিকোয়েস্ট অনুমোদিত এবং ১ মিনিট পর নতুন রিকোয়েস্ট গ্রহণ করা যাবে।

৪. কাস্টম রেট লিমিট কিপিং

আপনি চাইলে নিজের রেট লিমিট কিপিং পদ্ধতি তৈরি করতে পারেন। এটি RateLimiter ফ্যাসেড ব্যবহার করে করা যায়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে কাস্টম রেট লিমিট কিপিং তৈরি করা হয়েছে:

use Illuminate\Support\Facades\RateLimiter;

RateLimiter::for('login', function (RateLimiter $rateLimiter) {
    return $rateLimiter->allow(5)->every(1);
});

এটি login নামে একটি কাস্টম রেট লিমিট তৈরি করবে যেখানে প্রতি মিনিটে ৫টি রিকোয়েস্ট অনুমোদিত হবে।

রেট লিমিটিং এ রেসপন্স

যখন কোনো রিকোয়েস্ট রেট লিমিট পেরিয়ে যায়, তখন লারাভেল একটি 429 Too Many Requests HTTP স্ট্যাটাস কোড সহ একটি রেসপন্স পাঠায়। এটি ব্যবহারকারীদের জানিয়ে দেয় যে তারা নির্দিষ্ট সময়ের মধ্যে অতিরিক্ত রিকোয়েস্ট করেছেন এবং তাদের আবার চেষ্টা করতে হবে।

উপকারিতা

  • স্প্যামিং রোধ: রেট লিমিটিং আপনার অ্যাপ্লিকেশন বা API এর ওপর অতিরিক্ত লোড এড়িয়ে চলে এবং স্প্যামিং প্রতিরোধ করে।
  • অতিরিক্ত রিকোয়েস্ট নিয়ন্ত্রণ: এটি কোনো ইউজারের এক্সেস অতিরিক্ত রিকোয়েস্ট থেকে রোধ করে।
  • রিসোর্স ব্যবস্থাপনা: রেট লিমিটিং আপনার অ্যাপ্লিকেশন বা সার্ভারের রিসোর্স ব্যবস্থাপনা সহজ করে তোলে।

লারাভেল রেট লিমিটিং একটি গুরুত্বপূর্ণ ফিচার যা API এবং ওয়েব অ্যাপ্লিকেশন এর নিরাপত্তা এবং কার্যক্ষমতা বৃদ্ধি করতে সাহায্য করে। এটি বিশেষত ব্যবহারকারী বা ক্লায়েন্ট থেকে অতিরিক্ত রিকোয়েস্ট এড়াতে এবং সিস্টেমকে নিরবচ্ছিন্নভাবে কার্যকর রাখতে সহায়তা করে।

Content added By
Promotion