PHP实时路径缓存如何工作?

Ger*_*che 9 php caching realpath

我一直无法弄清楚实际路径缓存实际上在做什么.

以下是我的一些问题:

  • 什么时候缓存路径,并且在什么标准下可能不会缓存?
  • 它是如何缓存的?在内存中,在文件系统上还有别的吗?如果在文件系统上,文件在哪里?
  • 每个请求都有缓存吗?即多个缓存,或只是一个规范的实路缓存?

    我注意到,如果你转储缓存var_dump(realpath_cache_get())并保持,刷新页面,Ctrl+ F5,缓存转储有时会有不同的输出??? 这里发生了什么?

  • 如何以及何时清除/清除缓存?后台进程,某种垃圾收集器.例如,它是一个垃圾收集器:什么时候运行,它运行的标准是什么?是每个请求,例如随机请求吗?我不知道,我只是在这里吐痰.

    注意:您似乎可以通过调用手动清除缓存clearstatcache(true).

realpath_*函数

配置选项

realpath_cache_size "16K" PHP_INI_SYSTEM 从PHP 5.1.0开始提供.

realpath_cache_ttl "120" PHP_INI_SYSTEM 从PHP 5.1.0开始提供.

(来自手册)

realpath_cache_size integer确定PHP使用的实际路径缓存的大小.在PHP打开许多文件的系统上应该增加此值,以反映执行的文件操作的数量.

realpath_cache_ttl integer缓存给定文件或目录的实际路径信息的持续时间(以秒为单位).对于文件很少更改的系统,请考虑增加该值.

小智 5

realpath()调用时会填充Realpath缓存.

realpath()将从realpath缓存中快速提取对同一文件的后续调用.

真实路径缓存不是通过普通的文件系统功能(使用相同的缓存stat,file_exists...).

Realpath缓存是每个进程,其条目在realpath_cache_ttlphp.ini设置中指定的持续时间内保持活动状态.