如何调整PHP realpath缓存


How can I tune the PHP realpath cache?

最新版本的PHP有一个文件名缓存,用于了解文件的真实路径,require_once()include_once()可以利用它。

您可以在php.ini中设置一个值来设置缓存的大小,但我不知道如何判断缓存的大小。默认值是16k,但我看不出我们使用了多少缓存。文件含糊不清:

确定PHP要使用的realpath缓存的大小。这个值应该在PHP打开许多文件的系统上增加,以反映执行的文件操作的数量。

是的,我可以增加允许的缓存量,并使用ab或其他一些测试运行测试,但我希望有更多的内省,而不仅仅是远距离计时。

您可能已经发现了这一点,但对于那些遇到这个问题的人,您可以使用realpath_cache_size()和realpath_cachi_get()来计算站点上使用了多少realpath缓存,并相应地调整设置。

虽然我不能提供任何特定于您情况的东西,但我的理解是,对于大多数大型PHP应用程序(尤其是使用Zend framework等框架的应用程序)来说,16k非常低。如果你的应用程序使用了大量include,我会说至少要将缓存大小增加一倍,然后看看该怎么办。只要目录结构非常一致,您可能还想增加TTL。

要扩展Noodles提供的答案,您可以使用以下代码创建一个小test.php:

<?php
echo "<br>cache size: ".realpath_cache_size();
echo "<br>";
echo "<br>cache: ".print_r(realpath_cache_get(););
?>

将其上载到您的网站并导航到该网站。它将显示缓存当前使用的字节数,以及缓存中的实际字节数。这个值一直在变化,所以继续按F5按钮可以更好地了解你所处的位置。在高峰期进行测试也是个好主意。

如果您看到该值经常达到php.ini中定义的最大缓存大小,那么是时候增加该值了。

请记住,默认的PHP设置是16K,即16384字节。

16K是非活动文件数。

大多数站点设置为1k。与APC、xcache-ea等中的设置非常相似。