基于磁盘的APC替代方案?

时间:2012-12-16 02:19:06

标签: php caching apc

我非常喜欢PHP的APC缓存模块的易用性和功能。在我正在研究的网站中,我一直在使用它来缓存来自远程服务器的json响应(用于库存等)。但是,我现在正在做一些不同的请求(数千个),我想缓存这些请求,并且我担心为此目的而浪费内存。

我知道我可以编写一些MYSQL处理程序来将结果存储在数据库中,但这似乎是我的时间投入相当大,特别是如果一种方法可以避免它已经退出

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

这完全取决于您需要缓存多少请求以及缓存它们的原因。如果它只是少数,通过像Memcached这样的内存缓存它们将非常简单(和临时)。此外,您可以设置memcached使用的RAM量,以便不会运行该内存盒。

如果你只是缓存速度,那么将它们从驱动器中拉回来并不比重新轮询web服务快得多。

如果你正在缓存持久性(在你正在轮询的web服务发生故障的情况下),你最好使用像MySQL甚至MongoDB这样的东西。特别是使用Mongo会很好,因为你不需要一个模式,只能将JSON对象塞进一个集合中,然后将它们拉回来。

答案 2 :(得分:0)

回答我自己的问题,Pear:Cache-Lite可以解决问题。