2010-05-31 78 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