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化されていますからね。

ECCUBE制作トップへ

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

    脆弱性修正