トップ «前の日記(2018-07-12) 最新 編集

2018-07-13 [長年日記]

_ Laravelアプリはお手軽にscale outしないので注意が必要

Laravel で Form を利用して、エラーだった場合にそれをどう返すかのサンプルコードは 4.2 でも 5.6 でも以下のように

redirect で返すようになっている。

そして Form を組み立てる View 側では Input::old() を使うとよいということになっている。さっき入力していたデータを復元してあげないと不親切だからだ。

しかしこの組み合わせはクセモノ。

何が起きるかというと Session データに Form の Input すべてを載せることになるので、実質 Session Driver に Cookie は利用できない*1。つまり、アプリケーションサーバだけでカジュアルに scale out することはできないということになる。

Session Driver はすべてバックエンドのストレージ前提になり、DBMS や memcached, Redis などが必要になる*2。これらの準備が簡単なよくできた PaaS を使っているならよいが、そうでないならインフラの知識も必要になってしまうので、注意しておいた方がよさそうだ。

しかし、この Form の error を redirect で返す方法って Laravel のこのコードで初めて見たんだけど、こういう設計って推奨されるんですかねえ…?

Tags: PHP

*1 Input がどんな大きさになるのかはよほど注意深く作らないとコントロールできないだろう

*2 当たり前だが file は scale out しない。てゆーか DBMS に Session データを置くのも scale out しないような?