1

PHP の APC キャッシング モジュールの実装の容易さと機能性が非常に気に入っています。私が取り組んでいるWebサイトでは、リモートサーバーからのjson応答をキャッシュするために使用しています(インベントリなど)。ただし、現在、キャッシュしたい多数の異なる要求 (数千) を実行しており、この目的のためにメモリを浪費することに警戒しています。

結果をデータベースに格納する MYSQL ハンドラーをいくつか作成できることはわかっていますが、これを回避する方法がすでに存在する場合は特に、かなりの時間を費やすことになると思われます。

4

3 に答える 3

2

私は理由のように聞こえるのは嫌いですが、次のようなものの何が問題なのですか (まあ、非常に単純化されすぎており、ファイルが読み取られている間にファイルがまだ書き込まれている場合に備えてチェックする必要があることを認識しています):

function get_json($id) {
    $fn = './json-cache/' . $id . '.json';
    if(file_exists($fn)) {
        return file_get_contents($fn);
    } 

    $json = do_something_to_get_json();
    file_put_contents($fn, $json, LOCK_EX);
    return $json;
}
于 2012-12-16T02:28:33.473 に答える
1

それはすべて、キャッシュする必要があるリクエストの数と、それらをキャッシュする必要がある理由によって異なります。ごく一部の場合、Memcached などを介してメモリにキャッシュするのは非常に簡単です (そして一時的です)。さらに、ボックスがメモリ不足にならないように、memcached が使用する RAM の量を設定できます。

単に速度を上げるためにキャッシュしている場合、それらをドライブから引き戻すのは、Web サービスを再ポーリングするよりもはるかに高速ではありません。

永続性のためにキャッシュしている場合 (ポーリングしている Web サービスがダウンした場合)、MySQL や MongoDB などを使用することをお勧めします。特に Mongo を使用すると、スキーマが不要になり、JSON オブジェクトをコレクションに詰め込み、後で取り出すことができるので便利です。

于 2012-12-16T02:26:10.190 に答える
0

私自身の質問に答えるには、Pear:Cache-Liteがうまく機能します。

于 2012-12-16T03:12:50.767 に答える