これは、昨日の私の質問へのフォローアップです-データベースに「キャッシュ」を保存しない理由を尋ねるコメントでした(そして、数百万のフォルダーがそれぞれ最大1000を保持する異なるサブフォルダーに分割されたフォルダーアーキテクチャをテストしました)は、私に正しい解決策について考えさせ始めました。
1 つのフォルダーに 100 万以上のファイル、インクルード (キャッシュ) の場合
基本的に、ここでもう少し詳しく説明します。多くのデータベース クエリが必要な、高価な計算があります。基本的に、プログラムのすべてのリクエストは特定のユーザーを対象としています。各ユーザーの結果は、常にまったく同じになります (ユーザーが大きな変更を加えるまで)。基本的に、私は考えていました: 人がこのユーザーページにアクセスするたびにこの操作を行うのはなぜですか?一度実行して保存できるのであれば?
基本的に、結果はさまざまなデータ/設定などを保持するさまざまなPHPオブジェクトのセットです。そのため、.inc
それらのオブジェクトを作成するファイルを作成することを考えていました(SELECTの結果となる定義済みの値を持つ)。そして、誰かがその特定のユーザーに電話をかけるたびに、私は簡単に電話をかけるだけinclude
で問題は解決します.
今、私はその解決策についてもう確信が持てません。これは、基本的にすべてのユーザーが、含めるファイルを少なくとも 1 つ.inc
(複数可能) 持っていることを意味します。つまり、ユーザー テーブルUNSIGNED MEDIUMINT
のPK
がある場合、少なくとも 8388607 * ~2 ファイル (最悪の場合) をサポートするフォルダー構造が必要です。
ここで間違った方向を探していると思います。私の可能性は何ですか?
- データを選択して計算し、すべてのページ呼び出しでまとめます-常に同じ結果が得られます
- 2. と同じですが、結果のオブジェクトをコード スニペットとしてファイルに保存します - 含める
- 2. と同じですが、結果のオブジェクトをシリアル化し、ファイルまたはデータベースに保存し、ページ呼び出しごとにシリアル化を解除します。
- ?
この種の問題を解決する他の解決策/方法はありますか? これらの解決策はすべて、私自身の耳にはあまりきれいに聞こえませんが、これを行う別の方法を見つけるのに苦労しています. 800 万のファイルを保持している、または同じことを何度も計算している - 何とか間に何かがあるはずです。
助言がありますか?
ありがとう!- 下手な英語で失礼します。