2016-12-15 12 views
0

大規模なPHP Laravelアプリケーションを構築しています。多くの小さなアプリ/モジュールで構成されるデベロッパー向けのアプリです。大規模なLaravelアプリケーション複数のモデルの場合のパフォーマンス

たとえば、Evernote、Code Snippetsアプリ、RSS Feed Readerと似たノートブックアプリPinBoardに似たブックマークアプリ、1つのアプリで30個以上の小さなアプリがあり、各アプリはモジュールとして動作します。

MY質問は性能に関するものです。この多くのモデルやコントローラなどがロードされているので、このアプリの大規模なユーザーベースで良いパフォーマンスが期待できないのですか?

サーバー設定などの不明な要素が多すぎることがわかっていますが、モデルや物事などのようなものはすべて、アプリケーションのinitまたは必要に応じてロードされていますか?多くの場合、ほとんどのアプリ/モジュールはリクエストで使用されません。

私は、モジュールを追加するパッケージをいくつか見てきました。モジュールは、独自のコントローラ、モデル、ルート、ビュー、および各モジュールのAppフォルダに表示されているものを持っています。しかし、私はそのルートに行きたいとは思っていませんので、今はいつものようにメインアプリの下にすべて持っています。

+0

、あなたが何かを構築することができます... – Kyslik

+0

私はこれに役立つ答えは情報がなくてもないと思います。あなたのプログラム全体にあるモデル/コントローラの番号は無関係です。特定のリクエストで使用されているものだけが重要であり、それでもそれらのファイルの「サイズ」は重要ではありません。 –

+0

必要に応じてモデルとコントローラがロードされます。十億個のモデルタイプを持つことができますが、 'Foo :: all()'はそれらのモデルのPHPファイルのうちの1つだけをロードします。 – ceejayoz

答えて

1

単純な答えはyesです。あなたが与えられたリクエストに使用しているモデル/コントローラのみを読み込みます。いいえ、あなたが獲得したモデルとコントローラの数/サイズ(パッケージやモジュールを含む)アプリのパフォーマンスに悪影響を与えます。

より複雑な答えは、いつものようにコードを書いた方法に依存します。あるビジネスロジックのために他のモデルを呼び出すモデル、またはキャッシングなしでデータのいくつかの関係を熱心にロードするモデル、またはすべてのコントローラに不合理な量の依存性注入を使用するモデル...しかし、それはとにかく、ララヴェル。

しかし、私の経験上、パフォーマンスに最も大きな影響を与えるのは、あまりにも空想的であるか、非効率的にデータベースからデータを取得しようとする優しいコードです。それを避けるための方法について学ぶためにドキュメントをチェックアウト:適切なキャッシング

https://laravel.com/docs/5.3/eloquent-relationships#eager-loading

関連する問題