gpt4 book ai didi

php - OPcache max_accelerated_files 实际上是如何工作的?

转载 作者:搜寻专家 更新时间:2023-10-31 21:21:21 25 4
gpt4 key购买 nike

也许这是个愚蠢的问题,但我正在尝试弄清楚 max_accelerated_files 实际上是如何工作的...

我理解来自 PHP net 的“说明/说明”

opcache.max_accelerated_files integer The maximum number of keys (and therefore scripts) in the OPcache hash table. The actual value used will be the first number in the set of prime numbers { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } that is greater than or equal to the configured value. The minimum value is 200. The maximum value is 100000 in PHP < 5.5.6, and 1000000 in later versions.

但我的问题是配置后它会如何处理这个数字。它是否为此设置分配内存?为什么我们不设置数字 1000000 如果我们有足够的内存就可以了?如果我们假设将此数字配置为 2000 并且我们有 2010 个文件,会发生什么情况?他们是否对堆栈进行了某种排序,一旦该文件被缓存,它就会被缓存?未缓存的文件会怎样?

谢谢你的回答

最佳答案

OPCache 将缓存的脚本存储在 HashTable 中,这是一种查找时间非常快(平均)的数据结构,因此可以快速检索缓存的脚本。 max_accelerated_files 表示可以存储在此哈希表中的最大键数。您可以将其视为关联数组中键的最大数量。为此分配的内存是 OPCache 可以使用的共享内存的一部分,您可以使用 opcache.memory_consumption 选项对其进行配置。当 OPCache 尝试缓存比可用键数更多的脚本时,它会触发重启并清理当前缓存。

假设您将 opcache.max_accelerated_files 配置为 223,并且对您的 /home 的请求路由解析并缓存到 OPCache 200 脚本中。只要您的下一个请求只需要那 200 个脚本,OPCache 就可以了。但是,如果以下请求之一解析了 24 个新脚本,OPCache 将触发重新启动以为缓存这些脚本腾出空间。由于您不希望这种情况发生,因此您应该监视 OPCache 并选择一个合适的数字。

请记住,如果需要使用诸如 require include.phprequire ../../include.php 之类的相对路径,一个文件可以使用不同的键多次缓存。避免这种情况的最干净的解决方案是使用适当的自动加载。

关于php - OPcache max_accelerated_files 实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47330690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com