10月3日、Laravelチームは「Laravel 11.26」をリリースした。この新バージョンでは、プロセスの停止機能の強化、Rate LimitingのためにEnumsを使用する機能、ジョブミドルウェアを作成するArtisanコマンドなど、いくつかの新機能と改善が導入されている。
主な新機能
Rate LimitingでのEnumsの使用
Seth Phatが、Rate Limiterを登録する際にBackedEnum
とUnitEnum
を使用できるようにする機能を提供した。これにより、以下のようにRateLimiter::for
を使って、特定の制限を定義できるようになった。use Illuminate\Support\Facades\RateLimiter; // 特定のEnum (GlobalRateLimit::HUBSPOT) に対して1秒間に100回、合計10回のリクエストを制限 RateLimiter::for( GlobalRateLimit::HUBSPOT, fn () => Limit::perSecond(100, 10) );
また、
RateLimited
キュージョブミドルウェアと組み合わせて使用することも可能である。use Illuminate\Queue\Middleware\RateLimited; // グローバルレート制限をジョブに適用するミドルウェア public function middleware(): array { return [ new RateLimited(GlobalRateLimit::HUBSPOT) ]; }
make:job-middleware
Artisanコマンドの追加
ジョブミドルウェアを作成するためのArtisanコマンドmake:job-middleware
が追加された。このコマンドにより、App\Jobs\Middleware
名前空間内に新しいジョブミドルウェアを簡単に生成できる。
```bash
新しいジョブミドルウェアを作成するコマンド
php artisan make:job-middleware RateLimited
- **プロセスおよびプールに`stop()`メソッドの追加**
Mathias Hansenが、プール内のすべてのプロセスを優雅に停止するための`stop()`メソッドを提供した。単一のプロセスやプール全体のプロセスを停止するための柔軟な制御が可能となった。
```php
// 単一プロセスの例: 120秒後にタイムアウトするbashスクリプトを開始
$process = Process::timeout(120)->start('bash import.sh');
// プロセスを停止
$process->stop();
// プロセスプールの例: sleepコマンドを持つ複数プロセスをプールに登録
$this->pool = Process::pool(function (Pool $pool) {
$pool->path(base_path())->command('sleep 5');
$pool->path(base_path())->command('sleep 10');
})->start();
// すべてのプロセスを優雅に停止
$this->pool->stop();
// 特定のシグナルを送ってプロセスを停止
$this->pool->stop($signal);
- Factoryのジェネリックアノテーションの追加
Punyapal Shahが、make:model
コマンドに、HasFactory
トレイトのジェネリックアノテーションを追加する更新を行った。これにより、IDEsがModel::factory()
で返されるファクトリーのタイプをより正確に把握できるようになる。
リリースノート
詳細な変更内容や新機能の一覧については、11.25.0と11.26.0の比較を参照していただきたい。詳細は[Laravel 11.26 Released]を参照していただきたい。