2012-04-03 10 views
1

いくつかのPHPフレームワークからソースとドキュメントを読んで理解できたのは、あなたが個人的にキャッシュするか、$ _SESSION varに投げるものを除いて、一般的には持続しないということです。どうしてこれなの?基本的に1つのリクエストごとにフレームワークを初期化するのは無駄に思えますが、少なくとも処理と時間を節約するために、いくつかのコアオブジェクトと変数を直列化して保存する方が良いでしょうか?

私はこれがむしろ主観的で、尋ねることを避けたと思ったが、私が読んだことは本当にそれについて全く話していないので、紛れていることが明らかでなければならない。

私が見つけた唯一の本物の言及/議論は、私の質問に直接答えるものではなく、そのうちのいくつかは私の頭の中に少し行き来しているhereです。PHPでMVCフレームワークがリクエスト間で持続しないのはなぜですか?

明確化のための編集:私はPHPの内部動作について尋ねるのではなく、永続性がどのように機能するかを知っています(キャッシュやセッション変数を使用しない限り持続しません)。彼らのコアオブジェクトのためにこれを行います。また、私には主観的ですが、私が読んだことはほとんどありませんが、それはかなり標準的な習慣であるようです。私は何が欠けているか知りたいと思います。

+0

'$ _SESSION'または他のキャッシュ機構を使って明示的に要求しない限り、PHPには何も残っていません。 –

+0

私は、フレームワークの初期化中に一般的にインスタンス化されるコアオブジェクトを永続化するためにフレームワークがこれらのメカニズムを使用しないのはなぜですか? – hamalnamal

答えて

2

メモリ:

ほとんどのフレームワークが原因メモリの懸念に$ _SESSIONでこれらのコアメカニズムを格納しません。フレームワークは、数メガバイトの情報を含むことができる変数/オブジェクトを生成することが多い。それは多くのようには聞こえないかもしれませんが、それを数千人のユーザーにまで拡大し、問題があります。

データ「鮮度」

メモリにフレームワークコンポーネントを無理に勧めとの第二の問題は、彼らは非常に迅速に時代遅れになる可能性があることです。オブジェクトをメモリから取り出す代わりに、古くなっていないかどうかを確認して(実際には古くなった場合)、すべての要求で単にオブジェクトを再作成するよりも効率的ではありません(ほとんどの場合)。

これは物事を明確にすることを望みます。

+0

どのような種類のオブジェクトまたはデータ(またはどんな文脈で)がオブジェクト/データを持続させる方が効率的でしょうか? – hamalnamal

+1

それは本当に依存しています。通常、IDは主にセッション(ユーザーIDなど)に格納されているものです。目標はできるだけデータのサイズを小さくすることです。したがって、オブジェクトを検索するために使用できる小さなデータは通常、データベースモデル全体またはオブジェクト自体ではなく、保存されるデータです。 –

+0

オブジェクトをキャッシュする(たとえば、大規模オブジェクトのシリアル化バージョンを保存する、テキストファイルなどで保存するなど)、どのようなコンテキストで一般的に行われるのですか? – hamalnamal

0

あなたはデータがサーバ要求間で永続化したいなら、あなたはクッキー/セッションを使用したり、データベースにデータを格納する必要があります。これはちょうどそれが動作する方法です。 PHPはサーバリクエスト間で使用するためにデータを保存することはできません。

一部のフレームワークは、データベースまたはディスク上のローカルファイルにコアオブジェクトを格納できますが、フレームワークによって異なります。

関連する問題