Author: khino

DBの負荷の緩和(3)コントローラにより接続を変える

マスターDBの変更が複製DBに反映されるまでの時間差を考えると、サイトの特定のページでは複製DBのアクセスを使用したくないかもしれません。例えば、会員のログインなど会員のアカウントの情報に関わるページとか、Eコマースのチェックアウトのページとか、あるいは管理者のみがアクセスする管理ページとか。そうなると、特定のコントローラだけに複製DBコネクションを限定するにはどのようにすればよいのでしょう?

DBの負荷の緩和

お客さんのサイトのアクセスが最近10倍以上に増えてきました。ロードバランスもなく1台にウェブもDBもメールサーバーもあるAWSの仮想マシンなので、とりあえず、仮想マシンをアップグレードしました。 しかし、アップグレードしてもDBのトランザクションでデッドロックが起きるなどの問題が起こります。これはDBやOSのカーネルの調整が必要となるか、それともやはり、ロードバランスが必要なときか、しかしそんな専門的知識もないしそれを学習や試験する時間も必要だし。。。と悩んでいるときに、DBの読み書きでDB接続を自動的に使い分ける機能がLaravelにあることを見つけました。

FormRequestでルールを共有

世界中大変なことになっていますね。私が住んでいるところも、子供たちの学校は4月いっぱい休み、レストランやバーはテイクアウトのみとなっています。それらのビジネスに携わっている人たちは本当に困っていると思います。逆に、私を含めてこのブログを読んでくれる人たちは、インターネットのおかげで忙しくなっているくらいと思います。その有難さを胸に、日々精進と行きましょう! 今回は、またもやFormRequestの話で、1つのコントローラーにおいてあるいは複数のコントローラでどうバリデーションのルールを共有の仕方を考えてみます。

FormRequestを使う

コントローラーのファイルが大きくなってきたな、と思ったら、FormRequestを使ってみようかと真剣に考え始めました。まずは、FormRequestとは何ものかの紹介からです。

ddd()

Laravelではdd()というヘルパー関数をデバッグでよく使用しますが、ddd()は初耳です。なぜなら、Laravel 6.xバージョンで新登場したデバッグの関数だからです。

ユーザー認証のパスワード制限の変更

Laravel 5.8において、ユーザー認証のパスワードの長さの制限がそれまでの最低の6文字長から8文字長に変わりました。セキュリティ強化の目的です。しかし、この制限を変えたい、つまり昔の6文字長をキープしたい、あるいは8文字長でなくより強化して10文字長としたいなら、どうするのでしょう?