我在ubuntu 20.04上使用php-fpm 7.4.3.我的操作缓存黑名单根本不起作用.当启用了FILE_CACHE时,我访问的脚本被缓存.以下是我的配置.

Php.ini

opcache.save_comments=0
opcache.blacklist_filename="/etc/php/Opcache_Blacklist.txt"
opcache.file_cache="/tmp/php"
opcache.file_cache_fallback=0

Opcache_Blacklist.txt

/*
/**
/**.php
/*.php
*.php
**
**.php

Test.php

<pre>
<?php
print_r(opcache_get_status(true));
?>
</pre>

Some information from Test.php

[used_memory] => 9821016
[num_cached_scripts] => 44
[num_cached_keys] => 45
[max_cached_keys] => 16229
[blacklist_misses] => 2
[scripts] => Array
(
    ....
)

There is a strange thing: everytime I refresh the Test.php, blacklist_misses is increased by 1.

If I disable file_cache (opcache.file_cache=) in Php.ini, num_cached_scripts and num_cached_keys become 0, blacklist_misses keeps increasing, blacklist_miss_ratio is always 100.

PHP文档没有告诉我FILE_CACHE会影响黑名单,这是故意的还是错误的?

推荐答案

你得到了预期的行为举止.基本上,您告诉php从缓存中删除所有内容!

正常的黑名单文件如下所示:

/var/www/html/notcachedfile.php
/var/www/html/notcachedfolder/*

因此,文件notcachedfile.phpnotcachedfolder中的所有内容都不会被缓存.

高速缓存未命中装置PHP tries to retrieve data from the opcache, but that specific data is not currently in the opcache

所以每次刷新test.php文件都会增加blacklist_misses的原因是因为它与您在opcache_blacklist.txt中提供的模式相匹配

/* 

这意味着/(根目录)中的所有内容,包括您的test.php文件都不会在缓存中,因此每次都会显示缓存未命中.

Php相关问答推荐

在AJX请求中使用简写后,FormData出现非法调用错误

Laravel通过(扩展FormRequest类)方法验证表单请求

composer如何解析包名?

有条件的运费率基于购物车小计与WooPayments货币转换

在WooCommerce管理订单页面中显示区域名称

显示WooCommerce当前产品类别或标签的短代码

允许在WooCommerce管理员优惠券列表中显示自定义优惠券类型

WHERE方法不能与有效查询Laravel一起使用

升级到PHP 8.2后无法删除cURL Cookie文件

在WooCommerce上设置简单和可变产品的最小订单量

将购物车按钮重定向到Checkout-Wooccommerce

随机显示WordPress快捷代码功能时出现问题

使用 wp_footer 挂钩添加一些 CSS 不起作用

在 WooCommerce 我的帐户自定义部分显示未购买的产品

PHP header() 是否缓存重定向,如果是,如何防止它这样做?

Laravel 测试 assertJsonMissing 不适用于唯一的键.为什么?

为什么 8.0 之前的 PHP 版本拒绝命名空间Random\Namespace作为无效语法?

将变量从中间件传递到控制器 Laravel

NetBeans 不显示中文内容

在全局安装 Composer 包后运行命令