2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Laravel] ヘルスチェックのセッションを保存しないようにする

Posted at

この記事について

Laravelアプリケーションではセッション情報をデータベースに保存することが可能です。アプリケーションにリクエストが発生するたびに、セッションをデータベースに保存します。

もしLaravelアプリケーションの正常性を監視するためにヘルスチェックを実装している場合、セッションをデータベースに保存したくありません。

ヘルスチェックのような特定のリクエストのセッションをデータベースに保存しないようにする手法についてこのメモにまとめます。

構成

Laravel(バージョン10)アプリケーションはECSにて稼働しています。
ECSのタスク内にはLaravel(PHP-FPM)コンテナとNGINXコンテナが稼働しています。

ALBを経由して、ユーザのリクエストをアプリケーションに送信します。

バックエンドDBとしてはRDS(MySQL)を利用しています。
アプリケーションのデータと、セッションをこのRDSに保存するようにしています。

[ユーザー] => [ALB] => [NGINX(ECS)] => [Laravel(ECS)] => [MySQL(RDS)]

結論

ルーティングにて、セッションをDBに保存しないように設定することで実現可能です。

今回であればヘルスチェックのルーティングに以下のエントリーを追加すれば良いです。

config()->set('session.driver', 'array');

Laravelにはセッションドライバーという設定があります。セッションドライバーとはセッションを保存する場所です。config/session.phpファイルにセッションドライバーを定義すると、アプリケーション全体でそのセッションドライバーが利用されるようになります。(実際にはSESSION_DRIVERなどを.envにて指定します。このSESSION_DRIVERなどの変数がconfig/session.phpにて利用されています。)

特定の箇所にてセッションドライバーを指定したい場合はconfig()->set('session.driver', 'xxxx')と定義します。

セッションドライバーをarrayにすると、セッション情報はPHP配列として保存されて、永続化されなくなります。

routes/web.php
// アプリケーションのルーティング
Route::group(['prefix' => 'app'], function () {
    Route::get('index', [AppController::class, 'index'])->name('index');
    Route::get('create', [AppController::class, 'create'])->name('create');
    Route::post('create', [AppController::class, 'store'])->name('store');

});


// ヘルスチェックのルーティング
Route::group(['prefix' => 'healthcheck'], function () {
    config()->set('session.driver', 'array');

    Route::get('/', function () {
        return response()->json([]);
    });
});

このようにヘルスチェックのルーティングのグループ内に設定を差し込むことで、ヘルスチェックのセッションはデータベースに保存されなくなります。

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?