如何调整 PHP 真实路径缓存?

Posted

技术标签:

【中文标题】如何调整 PHP 真实路径缓存?【英文标题】:How can I tune the PHP realpath cache? 【发布时间】:2010-09-16 21:34:11 【问题描述】:

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

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

Determines the size of the realpath cache to be used by PHP. This value should be increased on systems where PHP opens many files, to reflect the quantity of the file operations performed.

是的,我可以增加允许的缓存数量,并使用ab 或其他一些测试来运行测试,但我想要一些更内省的东西,而不仅仅是远距离计时。

【问题讨论】:

【参考方案1】:

虽然我无法针对您的情况提供任何具体信息,但我的理解是,对于大多数较大的 PHP 应用程序(尤其是使用像 Zend Framework 这样的框架的应用程序)来说,16k 是相当低的。如果您的应用程序使用大量包含并查看从那里去哪里,我会说至少两倍的缓存大小。只要您的目录结构相当一致,您可能还想增加 TTL。

【讨论】:

【参考方案2】:

16K 是没有活动的文件数。

对于大多数网站,设置为 1k。与 APC、xcache ea 等中的设置非常相似。

【讨论】:

这是不正确的,它指的是正在使用的内存量,请参阅realpath_cache_size()和realpath_cache_get()。我目前将其设置为 16K,realpath_cache_size() 报告的内存使用 3 为 16317B,尽管只有 140 个文件缓存(从 realpath_cache_get() 计算),这是针对 Drupal 多站点的,肯定有超过 140 个文件应该在这里.所以 140 个文件正在使用全部 16K 内存。 php.net/manual/en/ini.core.php#ini.realpath-cache-size > 大小表示存储的路径字符串中的总字节数加上与缓存条目关联的数据的大小【参考方案3】:

您可能已经找到了这个,但是对于那些遇到这个问题的人,您可以使用 realpath_cache_size() 和 realpath_cache_get() 来确定您的站点上使用了多少 realpath 缓存并相应地调整设置.

【讨论】:

【参考方案4】:

要扩展 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 字节。

【讨论】:

以上是关于如何调整 PHP 真实路径缓存?的主要内容,如果未能解决你的问题,请参考以下文章

php下怎么隐藏下载路径?

PHP 打印出共享服务器的真实路径

PHP如何隐藏静态网页的真实地址及下载文件的绝对路径

php隐藏图片真实地址代码??

php 判断图片文件的真实类型

如何转换真实路径CString c ++ [关闭]