2010-05-31 123 views
1

我一直在使用http://code.google.com/p/phpbrowscap/作为一个项目,它通常很好。但有几次,它的缓存(这是纯文本的php文件(参见http://code.google.com/p/phpbrowscap/source/browse/trunk/browscap/Browscap.php#372等))已被“归零”,即整个缓存文件已变成大块的空值。基于文件的缓存在PHP

而不是试图找出为什么文件变为NULL,我虽然也许它可能会更好更改缓存策略为更有弹性的东西。

所以我想知道你是否有什么好的想法是一个很好的解决方案;我一直在寻找http://www.jongales.com/blog/2009/02/18/simple-file-based-php-cache-class/http://www.phpclasses.org/package/313-PHP-Cache-arbitrary-data-in-files-.html和我也只是保存一个序列化的数组,而不是纯PHP的文件,因为它现在正在做;但我不确定我应该在这里瞄准什么方法。

我很感激任何对这个技术领域的了解,因为我知道从性能的角度来看这很复杂。

回答

1

您所描述的内容似乎是phpbrowscap中的一个错误。你可以检查是什么原因造成的。

无论如何,phpbrowscap的策略是一个比较明智的策略,因为通过将缓存写入PHP文件,它也可以利用操作码缓存。

但是,我认为最好的策略是序列化对象,并将结果放入像APC这样的内存缓存中。另一种可能的策略是在一个扩展中实现这个功能,这个扩展总是在内存中。

+0

当我想到它时,我可以看到一个可能的竞争条件,当两个PHP进程替代更新(在我的情况下创建)。我想知道一个普通的羊群是否足够。 – azatoth 2010-05-31 20:25:50