PHP Conference Japan 2024

opcache_invalidate

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL ZendOpcache >= 7.0.0)

opcache_invalidate使缓存的脚本失效

描述

opcache_invalidate(字符串 $filename, 布尔值 $force = false): 布尔值

此函数使操作码缓存中的特定脚本失效。如果force未设置或为false,则只有当脚本的修改时间晚于缓存的操作码时,才会使脚本失效。此函数仅使内存缓存失效,而不使文件缓存失效。

参数

filename

要使失效的脚本的路径。

force

如果设置为true,则无论是否需要失效,都会使脚本失效。

返回值

如果filename的操作码缓存已失效或没有要失效的内容,则返回true;如果操作码缓存已禁用,则返回false

参见

添加备注

用户贡献的备注 3 条备注

15
joel at taotesting dot com
9年前
注意,只有现有的文件才能失效。

您无需从opcache中删除已删除的文件,而需要在删除它之前调用opcache_invalidate。
9
dmitry dot balabka at gmail dot com
5年前
opcache_invalidate尝试获取SHM锁。当无法获取锁时,opcache_invalidate将返回FALSE。在多个并发opcache_invalidate调用期间,该函数将更有可能返回FALSE。
10
kaare at colourbox dot com
8年前
请注意,失效实际上并没有从缓存中清除任何内容,它只是强制重新编译。您可以通过调用opcache_get_status()并查看失效的脚本实际上并未从“scripts”中删除来验证这一点。这意味着当缓存已满(状态中的“cache_full”:true)时,它不能用作opcache_reset()的更优雅的替代方案。如果您通过更改Web服务器的文档根目录来进行PHP代码的原子部署,缓存最终将填满并拒绝缓存新的请求。看来opcache_reset()是防止这种情况的唯一方法,但是opcache_reset()在尝试重启时可能会在任何时间禁用缓存,从而导致负载峰值。
To Top