2016-04-15 10 views
-1

高負荷アプリケーションに適したPHPアプリケーション(ORMマッピング、またはSymfonyまたは他の大きなフレームワークとしてdoctrineを使用していますか?私は特に、WebサイトやアプリケーションによってPHPファイルが呼び出されるたびに、フレームワークプロジェクト全体がロードされることを意味します。フレームワークを使用するためには、「オートローダー」ファイルをインクルードする必要があります。このファイルで、プロジェクト全体(プロジェクトとフレームワーク)がロードされ、メモリに格納されます。 私のサーバーには毎秒100リクエストがあり、リクエストごとにfile.phpを呼び出すことを意味すると思います - > autoload.phpをインクルードする - >全フレームワークファイルを自動読み込みする - >何かをする - >出力をユーザーに送る - >接続を閉じる本当にメモリを消費することができますか?一般的なパフォーマンスphp/[doctrine/symfonyのような大きなフレームワーク]

キャッシュのようなものがあります。要求1)がメモリ全体に読み込まれ、リクエスト2)が1ms後にメモリからファイルを使用できますか?

多分、PHPが内部的にどのように動作するか、誰かが私の理解を助けることができます。

私はWebサーバー上でFPM(FastCGI Process Manager)を使用しています。

+1

ここにSymfonyのパフォーマンスに関する記事があります。[here](http://symfony.com/blog/push-it-to-the-limits-symfony2-for-high-performance-needs) – LMS94

+0

Do not mean snarkyのように聞こえるのですが、キャッシュやPHPの知識がなくても、毎秒100回のリクエストを真剣にデザインしようとしていますか? – Cerad

+0

私の懸念事項を示すのは極端な例でした。毎秒10回のリクエストまたは1秒あたり1回のリクエストとし、オートローダがメモリにすべてをロードしているかどうか、新しいリクエストが入るたびにこれを知らせたいと思っています。 – Lumpy

答えて

0

まず、オートロードは必ずしもフレームワーク全体がメモリにロードされることを意味しません。例えば、コンポーザのオートローダは、クラスが実際にインスタンス化されるときに必要なクラスのみをロードします。したがって、オートロード機能の要点は、必要なものだけをロードすることです。

php5.5 +を使用している場合、phpオペコードをキャッシュからロードできるため、phpアプリケーションのロードとロード時間を短縮するopcacheがあります。あなたがphp7を使用している場合、それはさらに高速です。私は教義でいくつかのアプリケーションを構築しており、これまでには何の障害もなかった。はい、データベースの抽象化レイヤーとしてORMを使用するとオーバーヘッドがありますが、代わりにスパゲッティコードの方が重要ですか?はい。 PDOを比較してDoctrine2と言うことができるのですか? PDOが勝ちます。しかし、クエリとメタデータのキャッシュなどで教義を微調整することができます。私は個人的にredisキャッシュで教義を使用しています。それはかなり高速です。

+0

あなたの答えに感謝します。私はphp7を使用します。作曲家のオートローダーが実際にロードするものは私には分かりませんでした。私はそれがすべてのクラスをロードするだけだと思ったが、必要なものだけをロードすると( "use"でインポートされたクラス?)、それで大丈夫。 – Lumpy

+1

"use"を呼び出すときにクラスをロードしない、静的メソッドを呼び出すときや静的変数にアクセスするときにだけクラスをロードする。フードの下では、自動ロードを処理するコールバックを登録するためにspl_autoload_registerを使用します。 http://php.net/manual/en/function.spl-autoload-register.phpを参照してください。 –

関連する問題