EC-CUBEでロードバランサーを使ったウェブサーバー冗長化には必要になってくる、セッションの脱ファイル化、DB化についてご紹介します。
EC-CUBE4では簡単な3ステップでセッションのテーブル保存を実現することができます。

1. セッションを保存するテーブル作成

マイグレーションなどでセッションデータを保存するテーブルを作っておきます。BLOBだと足りないことがあるのでLONGBLOBにしておくのがポイントです。ちなみにMySQLです。

public function up(Schema $schema) : void
{
$this->addSql('CREATE TABLE `sessions` (
`sess_id` VARCHAR(128) NOT NULL PRIMARY KEY,
`sess_data` LONGBLOB NOT NULL,
`sess_time` INTEGER UNSIGNED NOT NULL,
`sess_lifetime` MEDIUMINT NOT NULL
) COLLATE utf8_bin, ENGINE = InnoDB;');
}

2. app/config/eccube/packages/session.yamlを追加

PdoSessionHandlerをサービス登録しておきます。.envのDATABASE_URLを利用するのがコツです。

services:
  Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler:
    public:    false
    arguments:
      - '%env(DATABASE_URL)%'

3. app/config/eccube/packages/framework.yamlを修正

サイトでPdoSessionHandlerを使用するように指定。

framework:
session:
handler_id: Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler

4. (おまけ) app/config/eccube/packages/install/framework.yamlを追加

インストール前に設置を行うのであれば、インストール時のセッションはファイルのままにします。

framework:
session:
handler_id: Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler

AWSのStickSession等を使えばDBセッションは必要ないかもしれませんが、EC-CUBEのセッションがファイルにあるのは気持ち悪いという方にはオススメのカスタマイズです。WordPressのセッションもDB化されていますからね。

日本発!ECオープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

EC-CUBEカスタマイズに関するお問い合わせはこちら


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ