0

データベースから状態をロードし、Wordpress / PHPページのロードのためにメモリに永続化して、キャッシュされたメモリオブジェクトとして使用する永続オブジェクトのセットを作成したいと思います。これらのオブジェクトに含まれるインターフェースを想像します。

  • initialise()-データベースから状態をロードし、リクエストを処理する前に必要なその他の初期化機能を実行します
  • getter_foo()-メモリにキャッシュされた応答を呼び出すPHPコードの一連のgetterメソッド
  • getter_bar()-メモリにキャッシュされた応答を呼び出すPHPコードの一連のgetterメソッド
  • update()-オブジェクトにデータベースに戻ってその状態を更新するように要求する時間またはイベント駆動型プロセスによって呼び出されます

私が疑う2つのトリックは次のとおりです。

  1. メインのPHPプロセスにこれらのオブジェクトのメモリ参照を割り当てて保持させ、データベースに対して毎回再初期化する必要なしに、Webトランザクション/リクエスト全体でメモリに固定されたままにします。
  2. トランザクションプロセスがこのオブジェクトへのポインタを取得できるようにするメカニズムを持つ。

これを行うソリューションの例はありますか?私は何年もプログラミングをしていますが、WordpressとPHPの両方に非常に慣れていないので、おそらくこれは非常に簡単です。わからない。いずれにせよ、redismemcachedのような技術的なソリューションは、同様の目標を達成する可能性があることを認識していますが、あまりエレガントではなく、文脈に依存しない方法です。とはいえ、これを行う簡単な方法がない場合は、80/20の法則を使用できます。:^)

4

1 に答える 1

0

1 つのリクエストでデータをメモリに保存し、別のリクエストで単純な PHP だけを使用してメモリからデータを読み取ることはできません。確かに PHP プロセスはメモリを使用しますが、リクエストが完了するとすぐに、メモリのその部分がガベージ コレクションされます。これは、2 番目の要求がメモリの前の部分に再びアクセスできないことを意味します。

あなたがほのめかしているのは、キャッシングと呼ばれます。簡単に言えば、キャッシングとは、高価なトランザクションの出力を後で再利用するために保存し、そのトランザクションのコストを節約することを意味します。その出力を保存するためのバックエンドとして何を使用するかは、あなた次第、またはあなたが利用できるもの次第です。RAM に保存する場合は、Memcached のようなものが必要になります。通常のファイルに保存することもできますが、ハードドライブにアクセスするため遅くなります。

于 2012-05-14T12:41:59.407 に答える