运行时配置

这些函数的行为受 php.ini 中设置的影响。

下表列出了 WinCache 扩展提供的配置设置并对其进行了解释。

WinCache 配置选项
名称 默认值 最小值 最大值 可更改 变更日志
wincache.fcenabled "1" "0" "1" INI_ALL 从 WinCache 1.0.0 开始可用
wincache.fcenabledfilter "NULL" "NULL" "NULL" INI_SYSTEM 从 WinCache 1.0.0 开始可用
wincache.fcachesize "24" "5" "255" INI_SYSTEM 从 WinCache 1.0.0 开始可用
wincache.fcndetect "1" "0" "1" INI_SYSTEM 从 WinCache 1.1.0 开始可用
wincache.maxfilesize "256" "10" "2048" INI_SYSTEM 从 WinCache 1.0.0 开始可用
wincache.ocenabled "1" "0" "1" INI_ALL 从 WinCache 1.0.0 开始可用。从 2.0.0.0 开始删除。
wincache.ocenabledfilter "NULL" "NULL" "NULL" INI_SYSTEM 从 WinCache 1.0.0 开始可用。从 2.0.0.0 开始删除。
wincache.ocachesize "96" "15" "255" INI_SYSTEM 从 WinCache 1.0.0 开始可用。从 2.0.0.0 开始删除。
wincache.filecount "4096" "1024" "16384" INI_SYSTEM 从 WinCache 1.0.0 开始可用
wincache.chkinterval "30" "0" "300" INI_SYSTEM 从 WinCache 1.0.0 开始可用
wincache.ttlmax "1200" "0" "7200" INI_SYSTEM 从 WinCache 1.0.0 开始可用
wincache.enablecli 0 0 1 INI_SYSTEM 从 WinCache 1.0.0 开始可用
wincache.ignorelist NULL NULL NULL INI_ALL 从 WinCache 1.0.0 开始可用
wincache.namesalt NULL NULL NULL INI_SYSTEM 从 WinCache 1.0.0 开始可用
wincache.ucenabled 1 0 1 INI_SYSTEM 从 WinCache 1.1.0 开始可用
wincache.ucachesize 8 5 85 INI_SYSTEM 从 WinCache 1.1.0 开始可用
wincache.scachesize 8 5 85 INI_SYSTEM 从 WinCache 1.1.0 开始可用
wincache.rerouteini NULL NULL NULL INI_SYSTEM 从 WinCache 1.2.0 开始可用。从 1.3.7 开始删除。
wincache.reroute_enabled 1 0 1 INI_SYSTEM|INI_PERDIR 从 WinCache 1.3.7 开始可用
wincache.srwlocks 1 0 1 INI_SYSTEM 从 WinCache 1.3.6.3 开始可用。从 2.0.0.0 开始删除。
wincache.filemapdir NULL NULL NULL INI_SYSTEM 从 WinCache 1.3.7.4 开始可用
有关 INI_* 模式的更多详细信息和定义,请参阅 配置设置的设置位置

以下是对配置指令的简要说明。

wincache.fcenabled bool
启用或禁用文件缓存功能。
wincache.fcenabledfilter string
定义一个逗号分隔的 IIS 网站标识符列表,用于在其中启用或禁用文件缓存。此设置与 wincache.fcenabled 结合使用:如果 wincache.fcenabled 设置为 1,则 wincache.fcenabledfilter 中列出的网站将关闭文件缓存;如果 wincache.fcenabled 设置为 0,则 wincache.fcenabledfilter 中列出的网站将打开文件缓存。
wincache.fcachesize int
定义为文件缓存分配的最大内存大小(以兆字节为单位)。如果所有缓存文件的大小总和超过此设置中指定的值,则会从文件缓存中删除大多数过时的文件。
wincache.fcndetect bool
启用或禁用文件更改通知检测功能。如果支持文件更改通知,则它将用于在对应的文件在文件系统中修改时立即刷新操作码和文件缓存条目。如果不支持文件更改通知,例如使用网络文件共享时,则 wincache 将以 wincache.chkinterval 指定的定期时间间隔轮询文件更改。
wincache.maxfilesize int
定义单个文件可以缓存的最大允许大小(以千字节为单位)。如果文件大小超过指定值,则不会缓存该文件。此设置仅适用于文件缓存。
wincache.ocenabled bool
警告

此选项已在 2.0.0.0 中删除

启用或禁用操作码缓存功能
wincache.ocenabledfilter string
警告

此选项已在 2.0.0.0 中删除

定义一个逗号分隔的 IIS 网站标识符列表,用于在其中启用或禁用操作码缓存。此设置与 wincache.ocenabled 结合使用:如果 wincache.ocenabled 设置为 1,则 wincache.ocenabledfilter 中列出的网站将关闭操作码缓存;如果 wincache.ocenabled 设置为 0,则 wincache.ocenabledfilter 中列出的网站将打开操作码缓存。
wincache.ocachesize int
警告

此选项已在 2.0.0.0 中删除

定义为操作码缓存分配的最大内存大小(以兆字节为单位)。如果缓存的操作码大小超过指定值,则会从缓存中删除大多数过时的操作码。请注意,操作码缓存大小必须至少是文件缓存大小的 3 倍。如果不是这样,操作码缓存大小将自动增加。
wincache.filecount int
定义扩展预计要缓存多少个文件,以便在启动时分配合适的内存大小。如果文件数量超过指定值,WinCache 将根据需要重新分配更多内存。
wincache.chkinterval int
定义扩展检查文件更改以刷新缓存的频率(以秒为单位)。将其设置为 0 将禁用缓存刷新。除非通过 scavenger 删除该文件的缓存条目,或者 IIS 应用程序池被回收,或者调用 wincache_refresh_if_changed 函数,否则文件更改不会反映在缓存中。
wincache.ttlmax int
定义缓存条目在未使用的情况下可以存活的最大时间(以秒为单位)。将其设置为 0 将禁用缓存 scavenger,因此缓存条目在 IIS 工作进程的整个生命周期内都不会从缓存中删除。
wincache.enablecli bool
定义在 PHP 以命令行(CLI)模式运行时是否启用缓存。
wincache.ignorelist string

定义一个扩展不应该缓存的文件列表。文件列表由仅使用文件名指定,并用管道符号 - "|" 分隔。

示例 #1 wincache.ignorelist 示例

wincache.ignorelist = "index.php|misc.php|admin.php"

wincache.namesalt string
定义一个字符串,在命名存储在共享内存中的扩展特定对象时使用。这用于避免在 IIS 工作进程中的其他应用程序尝试访问共享内存时可能发生的冲突。namesalt 字符串的长度不能超过 8 个字符。
wincache.ucenabled bool
启用或禁用用户缓存功能。
wincache.ucachesize int
定义为用户缓存分配的最大内存大小(以兆字节为单位)。如果存储在用户缓存中的变量的大小总和超过指定值,则会从缓存中删除大多数过时的变量。
wincache.scachesize int
定义为会话缓存分配的最大内存大小(以兆字节为单位)。如果存储在会话缓存中的数据的大小总和超过指定值,则会从缓存中删除大多数过时的数据。
wincache.rerouteini string
警告

此选项已在 1.3.7 中删除。从 1.3.7 开始,请参阅 wincache.reroute_enabled 获取类似的功能。

指定 reroute.ini 文件的绝对路径或相对路径,该文件包含应使用 WinCache 函数等效项替换其实现的 PHP 函数列表。如果指定了相对路径,则假定它相对于 php-cgi.exe 文件的位置。
wincache.reroute_enabled bool
启用或禁用通过文件缓存重定向某些文件 I/O 函数。
wincache.srwlocks bool
警告

此选项已在 2.0.0.0 中删除

启用或禁用使用共享读写锁。在调试 WinCache 中的死锁条件时,禁用此选项很有用。
wincache.filemapdir string
指定一个用于存储 WinCache 用于共享内存段的临时文件的目录的绝对路径。 此目录必须在本地计算机上,而不是在网络文件系统上。 如果未指定目录,WinCache 将使用 Windows 系统页面文件作为所有共享内存段。

添加注释

用户贡献的注释 2 个注释

2
ericsten at php dot net
9 年前
[编辑注:已修正错别字]

我最近在调试 WinCache 问题时发现了一些东西,这里简单说明一下。

如果你更改了 wincache.scachesize 的值,你必须关闭所有 php-cgi.exe 实例,并手动删除 wincache_session_*.tmp 文件。

wincache_session_*.tmp 文件将位于 php.ini 文件中 session.save_path 指定的目录下。

一个示例会话文件名看起来像:wincache_session_1_565779.tmp

如果你不删除这个文件,你将遇到 WinCache 会话处理程序的跨进程共享内存段的损坏。这将显示为来自你的 IIS 服务器的 500 错误。

谢谢!

--E.
0
software journalist
4 年前
wincache.php 在 Session Cache Overview 中显示可用内存返回的是 NAN B。

在 Google 上搜索没有找到与之相关的具体信息。

停止应用程序池并删除 Windows 临时目录中的 *session*.tmp 文件解决了这个问题。(感谢之前的记录者)
To Top